js元素插入、克隆及删除

330 阅读1分钟

设置属性steAttribute

setAttribute()方法添加指定属性,并为其赋指定的值
setAttribute()是针对本身具有的属性来设置值
setAttribute()可以给任意元素加上自定义属性和值
第一个值设置属性名,第二个值设置属性值

<div></div>
<script>
//datasrc是自定义属性
    let div = document.querySelector('div');
    div.setAttribute('datasrc','123abc');//在HTML中给div添加内联元素 datasrc = "123abc"
</script>

练习

写两个选择按钮需求说明:当点击“我和狗狗一起活下去”按钮时,显示“我和狗狗一起活下去 ”加图片;当点击“灰霾来了怎么办”按钮时,显示“灰霾来了怎么办”加图片。显示的文字变成红色。效 果如下代码:

   <p>
    选择你喜欢的书:
     <input type="radio" name="1" onclick="choose()" checked>我和狗狗一起活下去
     <input type="radio" name="1" id="" onclick="choose()" >灰霾来了怎么办
</p>
<img src="" alt=""> <p></p>
<script>
    let img = document.querySelector('img');
    let p = document.getElementsByTagName('p')[1];
    let img1 = 'img/dog.jpg';
    let img2 = 'img/mai.jpg';
    p.style.color = 'red';
    function choose(){
        if(document.getElementsByTagName('input')[0].checked){
             img.setAttribute('src',img1);
             p.innerHTML ='我和狗狗一起活下去';
        }else{
            img.setAttribute('src',img2);
            p.innerHTML = '灰霾来了怎么办';
        }
    }
</script>

创建插入

1.document.createElement(标签名') 创建标签
2.document.createTextNode('标签内容') 创建的标签中插入内容
3.document.querySelector('body').appendChild('标签') 在body中插入内容
4.body.insertBefore(A,b)显示顺序

点击按钮创建一个div例如:

<button onclick="fn()">点我创建div</button>
<script>
    function fn(){
    let div1 = document.createElement('div');
    let divText = document.createTextNode('我是div1');
    div1.appendChild(divText);
    let body = document.querySelector('body');
    body.appendChild(div1);
    }
</script>

insertBefore例子:

<script>
    let h1 = document.createElement('h1');
    let h1Text = document.createTextNode('我是h1');
    h1.appendChild(h1Text);
    let body = document.querySelector('body');
    body.appendChild(h1);
    let btn = document.createElement('button');
    let btnText = document.createTextNode('我在h1前面');
    btn.appendChild(btnText);
    body.appendChild(btn);
    
    body.insertBefore(btn,h1);//button在h1前面显示
</script>

克隆和删除

cloneNode(deep) 复制某个指定的节点
获取自己的元素 再插入到body中是不可以的
两种插入的实现方式 第一种创建新的节点去插入
第二种 clone出一个新的节点去插入
removeChild删除

h1点击后在它的上面克隆新的h1标签,然后创建一个按钮删除第一个h1,代码如下:

<h1 onclick="fn()" class="hh1">我是h1</h1>
<button onclick="fn1()">删除第一个</button>
<script>
    function fn(){
        let body = document.getElementsByTagName('body')[0];
        let h1 = document.getElementsByClassName('hh1')[0];
        let h1Clone = h1.cloneNode(true);
        let hh1 = document.createElement('h1');
        let h1Text = document.createTextNode('我是第二个h1');
        hh1.appendChild(h1Text);
        body.insertBefore(hh1,h1);
    }
    function fn1(){
        let body = document.querySelector('body');
        let h1 = document.getElementsByTagName('h1')[0];
        body.removeChild(h1);
    }
</script> -->