美文网首页吃饭用的前端
WebsAPI(三)——动态操作元素

WebsAPI(三)——动态操作元素

作者: CNLISIYIII | 来源:发表于2019-04-07 14:56 被阅读0次

    (一)动态创建元素

    1.通过innerHTML创建元素

    语法:元素.innerHTML = '内容';

    代码举栗:

    <body>

        <button>add</button>

        <ul>

            <li>列表项</li>

        </ul>

        <script>

        //更新ul中的内容,动态添加li

        var btn = document.querySelector('button');

        var ul = document.querySelector('ul');

        btn.onclick = function() {

            var old = ul.innerHTML; //原有的li

            ul.innerHTML = old + '<li>new list</li>';

        }

        </script>   

    </body>

    innerHTML适用于少量的拼接,因为字符串大量拼接时有性能问题。

    2.通过document.createElement创建元素

    语法:document.createElement('标签名');  //返回一个新的元素对象

    代码举栗:

    <body>

        <button>add</button>

        <ul>

            <li>列表项</li>

        </ul>

        <script>

        //更新ul中的内容,动态添加li

        var btn = document.querySelector('button');

        var ul = document.querySelector('ul');

        btn.onclick = function() {

          var newChild = document.createElement('li'); 

          newChild.innerText = '新元素';  //设置内容,给谁设置谁就点

          ul.appendChild(newChild);  //追加元素

        };

        </script>   

    </body>

    3.两种方法比较

    createElement不需要拼接,会自动追加到下一项。运行速度比innerHTML拼接要快。(推荐使用)

    innerHTML大量拼接字符串时速度慢。

    (二)动态追加元素

    1.语法:父元素.appendChild(子元素);

    函数封装注意:对于函数体中不能写死的地方用参数。

    代码举栗:

    <button>创建li</button>

    <ul>

    <li>我是li</li>

    </ul>

    <script>

    var btn = document.querySelector('button');

    var ul = document.querySelector('ul');

    btn.onclick = function() {

      // 创建一个新的li元素

      var newLi = document.createElement('li');

      // 追加

      ul.appendChild(newLi);

      // 设置内容

      newLi.innerText = '我是新来的li';

    };

    </script>

    (三)删除元素

    语法:父元素.removeChild(子元素); 

    confirm(); 提示是否确认删除,返回布尔值。

    代码举栗:

    <ul>

    <li>我是li1</li>

    <li class="li2">我是li2</li>

    <li>我是li3</li>

    </ul>

    <script>

    var ul = document.querySelector('ul');

    var li2 = document.querySelector('.li2');

    // 移除第二li

    ul.removeChild(li2);

    </script>

    (四)其他元素

    1.插入元素

    语法:父节点.insertBefore(新的节点,旧的子节点)

    2.替换元素

    语法:父节点.replaceChild(新的节点,旧的子节点)

    3.克隆元素

    语法:元素.cloneNode(true或false); 返回一份新的克隆后的元素,默认值false

    true,克隆该元素的所有内容

    false,仅仅克隆外层标签

    <ul>

    <li>我是li1</li>

    <li>我是li2</li>

    <li>我是li3</li>

    </ul>

    <div>

    <h2>我是div中的标题</h2>

    <span>我是span</span>

    <button>按钮</button>

    <p>段落</p>

    </div>

    <script>

    var ul = document.querySelector('ul');

    var oldLi = ul.children[0];

    // 创建一个新的li

    var newLi = document.createElement('li');

    newLi.innerText = '我是新的li';

    // 【插入】

    // ul.insertBefore(newLi,oldLi);

    // 替换

    // ul.replaceChild(newLi,oldLi);

    // 【获取div】

    var div = document.querySelector('div');

    // 【克隆】

    // var newDiv = div.cloneNode(); // 默认是false,表示仅仅克隆外层标签

    var newDiv = div.cloneNode(true); // 若是true,会克隆该元素的所有内容

    document.body.appendChild(newDiv);

    </script>

    相关文章

      网友评论

        本文标题:WebsAPI(三)——动态操作元素

        本文链接:https://www.haomeiwen.com/subject/pqouiqtx.html