js创建子元素:innerHTML与document.createElement()

建议(创建少量元素时):

        1.当父元素里没有其他元素,或者只添加少量行内元素或行内块元素时用innerHTML。

        原因:此时不会破坏父元素内的整体布局,并且只添加如a标签、span标签这些行内元素时,用innerHTML更加快捷。

        2.当父元素里已经布局了其他元素,并且添加有样式块元素时用document.createElement()。

        原因:用document.createElement()创建元素插入顺序,可以通过element.appendChild(往 后插)和element.insertBefore(往前插)来控制。并且如果创建的元素有样式,可直接给其element.className或者element.style.来添加样式。

    <style> 
        .father {
            width: 800px;
            margin: auto;
            border: 1px solid;
        }
        .father .child1 {
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        .father .child2 {
            width: 200px;
            height: 100px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div class="father"></div>
</body>

innerHTML创建子元素:

<script>
    let father = document.querySelector('.father');
    father.innerHTML += '<div class="child1">1</div>';
    father.innerHTML += '<div class="child2">2</div>';
    father.innerHTML += '<a href="#">我是a标签</a>'
    father.innerHTML += '<span>我是span标签</span>'
</script>

document.createElement()创建子元素

<script>
    let father = document.querySelector('.father');
    //添加div1
    let child1 = document.createElement('div');
    child1.innerHTML='1';
    child1.className='child1';
    father.appendChild(child1);
    //添加div2
    let child2 = document.createElement('div');
    child2.innerHTML='2';
    child2.className='child2';
    father.appendChild(child2);
    //添加a标签
    let a1 = document.createElement('a');
    a1.innerHTML='我是a标签';
    a1.href='#';
    father.appendChild(a1);
    //添加span标签
    let span1 = document.createElement('span');
    span1.innerHTML='我是span标签';
    father.appendChild(span1);
</script>

 注意:当创建大量元素时,切记不要使用innerHTML拼接字符串,因为这样效率低下,加载慢。

可以用document.createElement()循环创建,这样效率较高,逻辑性强。

其实还有更加有效率的方法,那就是将要创建的大量元素循环添加到数组里(用arr.push()),然后将数组用innerHTML添加到父元素中。

    let arr = [];
    for (let i = 0; i <10; i++) {
       arr.push('<a href="#">我是a标签</a>')
    }
    father.innerHTML+=arr.join('');//arr.join('')是去除,分割符

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在函数组件中,可以使用React Hooks来实现父元素依据子元素高度动态添加高度。具体实现步骤如下: 1. 在子组件中,使用Refs来获取子元素的高度。可以使用useRef()来创建Refs对象,然后在子元素的渲染函数中将Refs绑定到子元素的DOM节点上。 ```javascript function ChildComponent(props) { const childRef = useRef(null); return ( <div ref={childRef}> // 子元素内容 </div> ); } ``` 2. 在子组件中,使用useEffect() Hook,将子元素的高度传递给父组件。这个Hook会在子元素挂载完成后自动调用。 ```javascript function ChildComponent(props) { const childRef = useRef(null); useEffect(() => { const height = childRef.current.offsetHeight; props.onHeightChange(height); }, []); return ( <div ref={childRef}> // 子元素内容 </div> ); } ``` 3. 在父组件中,定义一个状态变量来保存子元素的高度,然后将这个状态变量传递给子组件。 ```javascript function ParentComponent(props) { const [height, setHeight] = useState(0); function handleHeightChange(height) { setHeight(height); } return ( <div style={{ height: height }}> <ChildComponent onHeightChange={handleHeightChange} /> </div> ); } ``` 在这个例子中,父元素的高度会根据子元素的高度来动态设置。当子元素的高度发生变化时,子组件会将新的高度传递给父组件,父组件会重新渲染并设置自己的高度。注意,在函数组件中,需要使用useEffect() Hook来替代类组件中的componentDidMount()方法来实现获取子元素高度的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值