JS dom、高级事件

it2023-12-30  71

Js dom、事件高级

1.节点操作

删除节点
node.removeChild(child)

何为删除节点,删除节点就是利用node.removeChild()方法从node节点中删除一个节点,返回删除的节点

例如,在ul里有3个li标签分别对应1,23,234当你想删除li标签里的内容是就得利用删除节点的方法案例如下:

这是代码的初始模样

当你想删除第一个li标签里的内容时,点击删除按钮,就会执行if条件里的删除节点,从而达到你想要的效果

以此类推,直到你删完所有的内容,将不再执行

当内容都被删除以后再次点击删除,删除按钮就会失去效果,因为ul标签里的内容没有了,所以,执行if语句,点击按钮为True,将不再执行。

2.删除留言

删除留言,设置一个文本框,在文本框中输入文字,可以在下方展示出来,并且,也可以删除你不想要的内容。

当我们把文本域里面的值赋值给li时,多添加一个删除的链接,实现页面上的输出内容可以删除,但需要把所有的链接获取过来,当我们点击当前的链接时,删除当前链接所在的li,并且要阻止链接的跳转需要添加javascript:void(0)或javascript:;

输出多个内容

当想删除多余的输出内容是,可点击li里添加的删除

3.复制节点

node.cloneNode()

复制节点,又可以叫克隆节点,是使用node.cloneNode()方法返回调用该方法的节点的一个副本。如果括号里参数为空值或为false时,则是浅拷贝,浅拷贝指的是只复制克隆节点本身,不克隆复制里面的子节点。如果括号里参数为true是,说明是深度拷贝,会复制节点本身以及里面所有的子节点。

当获取ul中第一位li时,复制第一位li

同理,当获取ul中的第二位li时,复制第二位li

4.创建元素的三种方式

document.write()

document.write('新设置的内容<p>标签也可以生成</p>')
缺陷:如果是在页面加载完毕后,此时通过这种方式创建元素,那么页面上存在的所有的内容全部被干掉

element.innerHTML

var box = document.getElementById('box'); box.innerHTML = '新内容<p>新标签</p>';

document.createElement()

var div = document.createElement('div'); document.body.appendChild(div);

性能问题:

innerHTML方法由于会对字符串进行解析,需要避免在循环内多次使用。可以借助字符串或数组的方式进行替换,再设置给innerHTML优化后与document.createElement性能相近

案例:

1.document.write()方法创建对象

<body> <input type="button" value="创建一个p" id="btn"/> 小苏是一个快乐的小男孩 <script src="common.js"></script> <script> //document.write("标签代码及内容"); document.getelementById("btn").onclick=function () { document.write("<p>这是一个p</p>"); }; // document.write("<p>这是一个p</p>"); //document.write()创建元素,缺陷:如果是在页面加载完毕后,此时通过这种方式创建元素,那么页面上存在的所有的内容全部被干掉 </script> </body>

2.innerHTML方式创建对象

<body> <input type="button" value="创建一个p" id="btn" /> <div id="dv"></div> <script src="common.js"></script> <script> //点击按钮,在div中创建一个p标签 //第二种方式创建元素: 对象.innerHTML="标签代码及内容"; document.getelementById("btn").onclick=function () { document.getelementById("dv").innerHTML="<p>窗前明月光,疑是地上霜,举头望明月,低头思故乡</p>"; }; </script> </body>

3.document.createElement()方式创建对象

<body> <input type="button" value="创建p" id="btn"/> <div id="dv"></div> <script src="common.js"></script> <script> //设置任意元素的中间的文本内容 function setInnnerText(element,text) { if(typeof element.textContent=="undefined"){ element.innerText=text; }else{ element.textContent=text; } } //第三种方式创建元素 //创建元素 //document.createElement("标签名字");对象 //把元素追加到父级元素中 //点击按钮,在div中创建一个p document.getelementById("btn").onclick = function () { //创建元素的 var pObj = document.createElement("p"); setInnnerText(pObj, "这是一个p"); //把创建后的子元素追加到父级元素中 document.getElementById("dv").appendChild(pObj); }; </script> </body>
最新回复(0)