标签:
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。
1)document.getElementById 根据
ID
获取一个标签
<body> <div id="id_1"> 123 </div> <script type="text/javascript"> var i = document.getElementById(‘id_1‘); //查找指定的id i.innerText = ‘456‘; //innerText修改指定的字符串 </script> </body>
2)document.getElementsByName 根据name属性获取标签集合
<body> <div name="name_1"> 123 </div> <script type="text/javascript"> var i = document.getElementsByName(‘name_1‘); //查找指定的name,这里和ID不一样name可以有多个 for (var item in i) { i[item].innerText = ‘456‘; //innerText修改指定的字符串 }; </script> </body>
3)document.getElementsByClassName 根据
class
属性获取标签集合
4)document.getElementsByTagName 根据标签名获取标签集合
<body> <div> 123 </div> <div> 234 </div> <script type="text/javascript"> var i = document.getElementsByTagName(‘div‘); //查找指定的标签类型,这里同样和ID不一样标签比如<div>标签可以有多个 for (var item in i) { i[item].innerText = ‘456‘; //innerText表示获取文本; 这整句是修改指定的字符串 }; </script> </body>
&
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title id="2">Title</title> 6 </head> 7 <body> 8 9 <div> 10 <h2>ok</h2> 11 <form action="#" id="1" class="form1" name="form1"> 12 <input type="text"> 13 <input type="text"> 14 <p>男:<input id=3 type="checkbox" name="男" value="nan"></p> 15 <input type="submit"> 16 </form> 17 <h1>hao</h1> 18 <input type="datetime-local"> 19 </div> 20 <script> 21 //选择器 22 // var names = document.getElementsByClassName(‘form1‘); // 根据class属性获取标签集合; 得到的是一个列表对象 23 // var names = document.getElementsByName(‘form1‘); //根据name属性获取标签集合;得到的是一个列表对象 24 // var names = document.getElementsByTagName(‘FORM‘); // 根据标签名获取集合;得到的是一个列表对象 25 var names = document.getElementById(‘1‘); //根据ID获取一个标签,得到一个普通对象 26 // var names = document.querySelector(‘*‘); //得到一个最先找到的对象,可以使用通配符* 27 28 console.log(names); 29 </script> 30 31 </body> 32 </html>
标签包含文本:
parentNode // 父节点 childNodes // 所有子节点 firstChild // 第一个子节点 lastChild // 最后一个子节点 nextSibling // 下一个兄弟节点 previousSibling // 上一个兄弟节点
标签:
parentElement // 父节点标签元素 children // 所有子标签 firstElementChild // 第一个子标签元素 lastElementChild // 最后一个子标签元素 nextElementtSibling // 下一个兄弟标签元素 previousElementSibling // 上一个兄弟标签元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> 123 <div class="c1">asdf</div> <div class="c1" id="i1"> <p>asdf</p> <div name="n1"> <span>asd</span> </div> <div name="n1"> <a>1</a> <a>11111</a> </div> </div> <div class="c1">asdf</div> </div> <script> var i1 = document.getElementById(‘i1‘); var p1_text = i1.parentNode; var p1 = i1.parentElement; var eles_node = p1_text.childNodes; // 含文本所有标签 for(var j=0;j<eles_node.length;j++){ var current_node = eles_node[j]; if(current_node.nodeType == 1){ console.log(eles_node[j]) } } var eles = p1.children; // 不含文本所有标签 for(var i=0;i<eles.length;i++){ console.log(eles[i]); } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title id="2">Title</title> </head> <body> <div> <h2>ok</h2> <form action="#" id="1"> <input type="text"> <input type="text"> <p>男:<input id=3 type="checkbox" name="男" value="nan"></p> <input type="submit"> </form> <h1>hao</h1> </div> <script> // var names = document.getElementById(‘1‘).childElementCount; //查询子元素个数 //var names = document.getElementById(‘1‘).firstElementChild; //查询第一个元素 //var names = document.getElementById(‘1‘).getAttribute(‘action‘); //获取该元素属性对应的值,不存在则为null //var names = document.getElementById(‘1‘).hasAttribute(‘name‘); //查询元素是否设置了name属性 //var names = document.getElementById(‘1‘).lastElementChild; //查询最后一个元素,如果查询的元素内没有包含其它元素,则返回null //var names = document.getElementById(‘1‘).nextElementSibling; //查询下一个同级别元素 //var names = document.getElementById(‘1‘).previousElementSibling; //查询同级别的上一个元素 //var names = document.getElementById(‘1‘).querySelector(‘H1‘); //在子元素里查询找到的第一个子元素标签 //var names = document.getElementById(‘1‘).querySelectorAll(‘INPUT‘); //查询子元素内所有INPUT的标签,如果设置了ID则会将ID一并返回 //var names = document.getElementById(‘1‘).removeAttribute(‘action‘); //移除存在的属性 //var names = document.getElementById(‘1‘).setAttribute(‘method‘,‘post‘); //添加属性,并设置属性值 //var names = document.getElementById(‘1‘).tagName; //查询元素的标签名 //var names = document.getElementById(‘1‘).attributes; //查询元素所有属性 //var names = document.getElementById(‘1‘).baseURI; //查询元素所属url //var names = document.getElementById(‘1‘).id; //查询元素ID //var names = document.getElementById(‘2‘).innerText ="hhh"; //设置元素内文本属性 //var names = document.getElementById(‘1‘).innerHTML; //查询元素内的html及文本内容 var names = document.getElementById(‘1‘).innerText; //查询元素内文本属性 console.log(names); </script> </body> </html>
innerText 获取文本 outerText innerHTML 获取标签、文本信息 value 值
<!DOCTYPE html> <html> <body> <h1 id="header">Old Header</h1> <script> var element=document.getElementById("header"); element.innerHTML="New Header"; </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="http://www.etiantian.org">老男人<span>666</span> </a> <input id="txt" type="text" /> <select id="sel"> <option value="1">上海</option> <option value="2">北京</option> </select> <script> var obj = document.getElementsByTagName(‘a‘)[0]; // [a,] // alert(obj.innerText); 获取文本 // alert(obj.innerHTML) 获取标签、文本信息 // value var val = document.getElementById("txt").value; console.log(val); obj.innerText = ‘123‘; obj.innerHTML = ‘<p>123</p>‘; </script> </body> </html>
attributes // 获取所有标签属性 setAttribute(key,value) // 设置标签属性 getAttribute(key) // 获取指定标签属性
var atr = document.createAttribute("class"); atr.nodeValue="democlass"; document.getElementById(‘n1‘).setAttributeNode(atr);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title id="2">Title</title> </head> <body> <div> <h2>ok</h2> <form action="#" id="1" class="form1" name="form1"> <input id =5 type="text"> <input type="text"> <p>男:<input id=3 type="checkbox" name="男" value="nan"></p> <input type="submit"> </form> <h1 id="h1">hao</h1> <input type="datetime-local"> </div> <script> var names = document.getElementById(‘5‘); //得到一个普通对象 names.id = ‘newid‘; //修改设置新标签属性ID names.className = "form"; //设置或修改标签css names.style.fontSize = ‘20px‘; //设置标签样式 names.setAttribute(‘txt‘,‘mydefine‘); //添加新属性 names.setAttribute(‘txt‘,‘mydefine‘); //添加新属性,存在则忽略不报错 names.removeAttribute(‘txt‘); //移除属性 names = names.getAttribute(‘id‘); //获取属性值 console.log(names); </script> </body> </html>
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button" value="全选" onclick="CheckAll();"/> <input type="button" value="取消" onclick="CancelAll();"/> <input type="button" value="反选" onclick="ReverseCheck();"/> <table border="1" > <thead> </thead> <tbody id="tb"> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> </tbody> </table> <script> function CheckAll(ths){ var tb = document.getElementById(‘tb‘); var trs = tb.childNodes; for(var i =0; i<trs.length; i++){ var current_tr = trs[i]; if(current_tr.nodeType==1){ var inp = current_tr.firstElementChild.getElementsByTagName(‘input‘)[0]; inp.checked = true; } } } function CancelAll(ths){ var tb = document.getElementById(‘tb‘); var trs = tb.childNodes; for(var i =0; i<trs.length; i++){ var current_tr = trs[i]; if(current_tr.nodeType==1){ var inp = current_tr.firstElementChild.getElementsByTagName(‘input‘)[0]; inp.checked = false; } } } function ReverseCheck(ths){ var tb = document.getElementById(‘tb‘); var trs = tb.childNodes; for(var i =0; i<trs.length; i++){ var current_tr = trs[i]; if(current_tr.nodeType==1){ var inp = current_tr.firstElementChild.getElementsByTagName(‘input‘)[0]; if(inp.checked){ inp.checked = false; }else{ inp.checked = true; } } } } </script> </body> </html> Demo
className // 获取所有类名 classList.remove(cls) // 删除指定类 classList.add(cls) // 添加类
a、创建标签
var tag = document.createElement(‘a‘) tag.innerText = "wupeiqi" tag.className = "c1" tag.href = "http://www.cnblogs.com/wupeiqi" // 方式二 var tag = "<a class=‘c1‘ href=‘http://www.cnblogs.com/wupeiqi‘>wupeiqi</a>"
b、操作标签
3 4 5 6 7 8 9 10 11 // 方式一 var obj = "<input type=‘text‘ />"; xxx.insertAdjacentHTML("beforeEnd",obj); xxx.insertAdjacentElement(‘afterBegin‘,document.createElement(‘p‘)) //注意:第一个参数只能是‘beforeBegin‘、 ‘afterBegin‘、 ‘beforeEnd‘、 ‘afterEnd‘ // 方式二 var tag = document.createElement(‘a‘) xxx.appendChild(tag) xxx.insertBefore(tag,xxx[1])
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <div> <input type="text" /> <input type="button" value="添加" onclick="AddElement(this);" /> </div> <div style="position: relative;"> <ul id="commentList"> <li>alex</li> <li>eric</li> </ul> </div> </div> <script> function AddElement(ths) { // 获取输入的值 var val = ths.previousElementSibling.value; ths.previousElementSibling.value = ""; var commentList = document.getElementById(‘commentList‘); //第一种形式,字符串方式 //var str = "<li>" + val + "</li>"; // ‘beforeBegin‘、 ‘afterBegin‘、 ‘beforeEnd‘、 ‘afterEnd‘ // beforeEnd内部最后 // beforeBegin 外部上边 //afterBegin 内部贴身 //afterEnd 外部贴墙 //commentList.insertAdjacentHTML("beforeEnd",str); //第二种方式,元素的方式 var tag = document.createElement(‘li‘); tag.innerText = val; var temp = document.createElement(‘a‘); temp.innerText = ‘百度‘; temp.href = "http://etiantian.org"; tag.appendChild(temp); // commentList.appendChild(tag); commentList.insertBefore(tag,commentList.children[1]); } </script> </body> </html>
var obj = document.getElementById(‘i1‘) obj.style.fontSize = "32px"; obj.style.backgroundColor = "red";
//Hello World!样式改变 <!DOCTYPE html> <html> <body> <p id="p1">Hello World!</p> <p id="p2">Hello World!</p> <script> document.getElementById("p2").style.color="blue"; document.getElementById("p2").style.fontFamily="Arial"; document.getElementById("p2").style.fontSize="larger"; </script> </body> </html>
// 点击后修改样式 <!DOCTYPE html> <html> <body> <h1 id="id1">My Heading 1</h1> <button type="button" onclick="document.getElementById(‘id1‘).style.color=‘red‘"> 点击这里!</button> </body> </html>
总文档高度 document.documentElement.offsetHeight 当前文档占屏幕高度 document.documentElement.clientHeight 自身高度 tag.offsetHeight 距离上级定位高度 tag.offsetTop 父定位标签 tag.offsetParent 滚动高度 tag.scrollTop
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body style="margin: 0;"> <div style="height: 20px;"></div> <div style="padding: 8px;margin: 20px;position: relative;"> <div id="i1" style="height:200px;border: 40px solid green;padding: 10px; margin: 90px;">asdf</div> </div> <script> var t1 = document.getElementById(‘i1‘); console.log(t1.clientTop); // 边框高度 console.log(t1.clientHeight); // height + padding上 + padding下 console.log(t1.offsetTop); //可见内容距离顶部高度;单纯距离顶端高度,从边框外部开始计算 console.log(t1.offsetHeight); //可见内容高度;自身高度 height + padding上 + padding下 + border上 + border下 console.log(t1.scrollTop); console.log(t1.scrollHeight); // 内容高度,height + padding上 + padding下 </script> </body> </html>
可以通过找到的对象obj,修改标签内容
obj.innerText = "ok" obj.innerHtml = "<h1>ok</h1>"
对于特殊的标签
input系列
textarea标签
select标签
需要通过obj.value = ‘ok‘形式修改内容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title id="2">Title</title> </head> <body> <div> <h2>ok</h2> <form action="#" id="1" class="form1" name="form1"> <input id =5 type="text"> <input type="text"> <p>男:<input id=3 type="checkbox" name="男" value="nan"></p> <input type="submit"> </form> <h1 id="h1">hao</h1> <input type="datetime-local"> </div> <script> var names = document.getElementById(‘5‘); //得到一个普通对象 // var names = document.querySelector(‘*‘); //得到一个最先找到的对象,可以使用通配符* names.value = "ok"; var newtag = document.createElement(‘a‘); newtag.href = "http://www.forts.cc"; // newtag.innerText = "堡垒"; var container = document.getElementsByTagName(‘form‘)[0]; // 找到第一个H1标签 // container.appendChild(newtag); //将新标签放到该标签里面,作为H1标签的子标签 // container.insertBefore(newtag,container.firstChild); //将新标签插到H1标签第一个子标签位置 // container.innerHTML = "<input type=‘text‘ />"; //这种方式会直接把container里面的所有元素覆盖 //‘beforeBegin‘, ‘afterBegin‘,‘beforeEnd‘,‘afterEnd‘ // container.insertAdjacentHTML(‘beforeEnd‘, "<a href=‘#‘>Hello</a>"); // 插在容器末尾最后一个子元素 // container.insertAdjacentHTML(‘beforeBegin‘, "<a href=‘#‘>Hello</a>"); //插在容器前,同级插入 container.insertAdjacentHTML(‘afterBegin‘, "<a href=‘#‘>Hello</a>"); //插在容器内,成为容器的第一个儿子 // container.insertAdjacentHTML(‘afterEnd‘, "<a href=‘#‘>Hello</a>"); //同级插入,在容器标签的后面 console.log(names); </script> </body> </html>
更多详见:http://www.cnblogs.com/wupeiqi/articles/5643298.html
标签:
原文地址:http://www.cnblogs.com/kongqi816-boke/p/5657338.html