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

  • Post author:
  • Post category:其他


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

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('')是去除,分割符



版权声明:本文为wsj2311161832原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。