1、javascript 给dom绑定click事件
例如,为一个 id="demo" 的按钮绑定事件,鼠标单击时弹出警告框:
- addEvent(document.getElementById("demo"),"click",myAlert);
- function myAlert(){
- alert("又是一个警告框");
- }
2、javascript 删除元素节点 / 删除dom
当你遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且它在子节点变化时会实时更新。
例如,对于如下HTML结构:
- <div id="parent">
- <p>First</p>
- <p>Second</p>
- </div>
当我们用如下代码删除子节点时:
- var parent = document.getElementById('parent');
- parent.removeChild(parent.children[0]);
- parent.removeChild(parent.children[1]); // <-- 浏览器报错
浏览器报错:parent.children[1]
不是一个有效的节点。原因就在于,当<p>First</p>
节点被删除后,parent.children
的节点数量已经从2变为了1,索引[1]
已经不存在了。
因此,删除多个节点时,要注意children
属性时刻都在变化。
一:获取元素节点方法:
1.var node = document.getElementById("nodeId");
2.var nodelist = document.getElementsByClassName("nodeclassname");
3.var nodelist = document.getElementsByTagName("nodetagname");
二:获取到元素节点以后我们可以对他进行的操作:1.对自身的操作。2.对子节点的操作。3.对兄弟节点的操作。4.对父节点的操作
2.1. 删除自身:node.parentNode.removeChild(node);
2.2.判断是否有子节点:var boolean = node.hasChildNodes();
获取子节点列表:var childList = node.childNodes;
获取节点元素类型:var nodetype = node.nodeType; var nodename = node.nodeName;
删除子节点。node.removeChild(childNode);
在子节点尾部插入一个子节点:node.appendChild(childNode);
在子节点收不插入一个子节点:node.insertBefore(childNode);
用A节点替换B节点:node.replaceChild(A,B);
2.3.node.nextSibling获取相邻的下一个兄弟节点
node.previousSibling获取相邻的上一个兄弟节点
2.4 . 获取父节点node.parentNode
DEMO:
- let currentNode = event.target;
- let parentNode = currentNode.parentNode;
- let newNode = currentNode.cloneNode(false);
- newNode.innerHTML = "修改";
- newNode.setAttribute("src", "/cms/update-base/"+id);
- parentNode.removeChild(currentNode); //删除当前dom
- parentNode.appendChild(newNode); //添加新节点
- console.log(currentNode);
- console.log(parentNode);
- return false;
3、替换元素节点replaceChild()
replaceChild 实现子节点(对象)的替换。返回被替换对象的引用。
语法:
node.replaceChild (newnode,oldnew )
参数:
newnode : 必需,用于替换 oldnew 的对象。
oldnew : 必需,被 newnode 替换的对象。
注意:
1. 当 oldnode 被替换时,所有与之相关的属性内容都将被移除。
2. newnode 必须先被建立。
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>无标题文档</title>
- </head>
- <body>
- <div><b id="oldnode">JavaScript</b>是一个很常用的技术,为网页添加动态效果。</div>
- <a href="javascript:replaceMessage()"> 将加粗改为斜体</a>
- <script type="text/javascript">
- function replaceMessage(){
- var newNode=document.createElement("i");
- //var text=document.createTextNode("aaa");
- //newNode.appendChild(text);
- var oldNode=document.getElementById("oldnode");
- oldNode.parentNode.replaceChild(newNode,oldNode);
- }
- </script>
- </body>
- </html>
效果:点击“将粗体改为斜体”后,“JavaScript”将消失:
是一个很常用的技术,为网页添加动态效果。
将加粗改为斜体
将注释取消后:
aaa是一个很常用的技术,为网页添加动态效果。
将加粗改为斜体