<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>style样式</title></head><body><h2 id="con">I love JavaScript</H2><p> JavaScript使网页显示动态效果并实现与用户交互功能。</p><script type="text/javascript">let con = document.getElementById('con');con.style.color = 'red';con.style.backgroundColor = '#CCC';con.style.display = 'none';</script></body></html>
返回带有指定名称的节点对象的集合。
语法
document.getElementsByName(name)
与getElementById() 方法不同的是,通过元素的 name 属性查询元素,而不是通过 id 属性。
注意:
因为文档中的 name 属性可能不唯一,所有 getElementsByName() 方法返回的是元素的数组,而不是一个元素。
和数组类似也有length属性,可以和访问数组一样的方法来访问,从0开始。
<!DOCTYPE HTML><html><head><script type="text/javascript">function getnum() {var mynode = document.getElementsByName('myt');alert(mynode.length);}</script></head><body><input name="myt" type="text" value="1"><input name="myt" type="text" value="2"><input name="myt" type="text" value="3"><br /><input type="button" onclick="getnum()" value="看看有几项?" /></body></html>
返回带有指定标签名的节点对象的集合。返回元素的顺序是它们在文档中的顺序。
语法:
document.getElementsByTagName(Tagname)
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>JavaScript</title></head><body><form name="Input"><table align="center" width="500px" height="50%" border="1"><tr><td align="center" width="100px">学号:</td><td align="center" width="300px"><input type="text" id=userid name="user" onblur="validate();"><div id=usermsg></div></td></tr><tr><td align="center" width="100px">姓名:</td><td align="center"><input type="text" name="name"></td></tr><tr><td align="center" width="%45">性别:</td><td align="center"><input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女</td></tr><tr><td align="center" width="30%">年龄:</td><td align="center" width="300px"><input type="text" name="age"></td></tr><tr><td align="center" width="100px">地址:</td><td align="center" width="300px"><input type="text" name="addr"></td></tr></table></form><h1 id="myHead" onclick="getValue()">看看三种获取节点的方法?</h1><p>点击标题弹出它的值。</p><input type="button" onclick="getElements()" value="看看name为sex的节点有几个?" /><Br><input type="button" onclick="getTagElements()" value="看看标签名为input的节点有几个?" /><script type="text/javascript">function getValue() {let myH = document.getElementById('myHead');alert(myH.innerHTML)}function getElements() {let myS = document.getElementsByName('sex');alert(myS.length);}function getTagElements() {let myI = document.getElementsByTagName('input');alert(myI.length);}</script></body></html>
练习实例, 体会不同DOM对象获取方式的不同效果
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>全选/全不选</title></head><body><form>请选择你爱好:<br><input type="checkbox" name="hobby" id="hobby1"> 音乐<input type="checkbox" name="hobby" id="hobby2"> 登山<input type="checkbox" name="hobby" id="hobby3"> 游泳<input type="checkbox" name="hobby" id="hobby4"> 阅读<input type="checkbox" name="hobby" id="hobby5"> 打球<input type="checkbox" name="hobby" id="hobby6"> 跑步 <br><input type="button" value="全选" onclick="checkall();"><input type="button" value="全不选" onclick="clearall();"><p>请输入您要选择爱好的序号,序号为1-6:</p><input id="wb" name="wb" type="text"><input name="ok" type="button" value="确定" onclick="checkone();"></form><script type="text/javascript">function checkall() {var hobby = document.getElementsByTagName("input");for(i=0;i<hobby.length;i++){if(hobby[i].getAttribute('name') == 'hobby'){ // 获取属性hobby[i].setAttribute('checked','checked'); // 添加属性}}}function clearall() {var hobby = document.getElementsByName("hobby");for(i=0;i<hobby.length;i++){if(hobby[i].getAttribute('name') == 'hobby'){hobby[i].removeAttribute('checked'); // 移除属性}}}function checkone() {var j = document.getElementById("wb").value; // 获取要选中的元素var hobby = document.getElementsByTagName('input'); // 获取所有元素var jid = "hobby"+j; // 拼接元素IDfor(i=0;i<hobby.length;i++){ // 遍历所有元素if(hobby[i].getAttribute('id') == jid){ // 查询指定元素hobby[i].setAttribute('checked','checked'); // 添加属性}}}</script></body></html>
通过元素节点的属性名称获取属性的值。
语法:
elementNode.getAttribute(name)
说明:
elementNode:使用getElementById()、getElementsByTagName()等方法,获取到的元素节点。
name:要想查询的元素节点的属性名字
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>getAttribute()</title></head><body><p id="intro">课程列表</p><ul><li title="第1个li">HTML</li><li>CSS</li><li title="第3个li">JavaScript</li><li title="第4个li">Jquery</li><li>Html5</li></ul><p>以下为获取的不为空的li标签title值:</p><script type="text/javascript">var con = document.getElementsByTagName("li");for (var i = 0; i < con.length; i++) {var text = con[i].getAttribute('title');if (text != null) {document.write(text + "<br>");}}</script></body></html>
setAttribute() 方法增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。
语法:
elementNode.setAttribute(name,value)
说明:
1.name: 要设置的属性名。
2.value: 要设置的属性值。
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title></head><body><p id="intro">我的课程</p><ul><li title="JS">JavaScript</li><li title="JQ">JQuery</li><li title="">HTML/CSS</li><li title="JAVA">JAVA</li><li title="">PHP</li></ul><h1>以下为li列表title的值,当title为空时,新设置值为"WEB前端技术":</h1><script type="text/javascript">var Lists = document.getElementsByTagName("li");for (var i = 0; i < Lists.length; i++) {var text = Lists[i].getAttribute('title');if (text == "") {Lists[i].setAttribute('title','WEB前端技术');document.write(Lists[i].getAttribute("title") + "<br>");}else{document.write(text + "<br>");}}</script></body></html>
在文档对象模型 (DOM) 中,每个节点都是一个对象。DOM 节点有三个重要的属性 :
nodeName : 节点的名称
nodeValue :节点的值
nodeType :节点的类型
一、nodeName 属性: 节点的名称,是只读的。
二、nodeValue 属性: 节点的值
三、nodeType 属性: 节点的类型,是只读的。以下常用的几种结点类型:
| 元素类型 | 节点类型 |
|---|---|
| 元素 | 1 |
| 属性 | 2 |
| 文本 | 3 |
| 注释 | 8 |
| 文档 | 9 |
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>节点属性</title></head><body><ul><li>javascript</li><li>HTML/CSS</li><li>jQuery</li></ul><script type="text/javascript">let lis = document.getElementsByTagName('li');for(let i=0;i<lis.length;i++){document.write("节点名称为: ") + document.write(lis[i].nodeName) + document.write(" 节点值为: ") + document.write(lis[i].innerText) + document.write(" 节点类型为: ") + document.write(lis[i].nodeType) + document.write("<br>");}</script></body></html>
访问选定元素节点下的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性。
语法:
elementNode.childNodes
注意:
如果选定的节点没有子节点,则该属性返回不包含节点的 NodeList。
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title></head><body><div>javascriptsss<p>javascript</p><div>jQuery</div><h5>PHP</h5></div><script type="text/javascript">let divs = document.getElementsByTagName('div');let firstDiv = divs[0].childNodes;for (let i = 0; i < firstDiv.length; i++) {if (firstDiv[i].nodeType == 1) {document.write(firstDiv[i].innerText + "<br>");}}</script></body></html>
语法:
nodeObject.nextSibling
说明:如果无此节点,则该属性返回 null。
语法:
nodeObject.previousSibling
说明:如果无此节点,则该属性返回 null。
两个属性获取的是节点。Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略。
解决问题方法:
判断节点nodeType是否为1, 如是为元素节点,跳过。
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>nextSibling</title></head><body><ul id="u1"><li id="a">javascript</li><li id="b">jquery</li><li id="c">html</li></ul><ul id="u2"><li id="d">css3</li><li id="e">php</li><li id="f">java</li></ul><script type="text/javascript">function get_nextSibling(n) {var x = n.nextSibling;while (x && x.nodeType != 1) {x = x.nextSibling;}return x;}var x = document.getElementsByTagName("li")[0];document.write(x.nodeName);document.write(" = ");document.write(x.innerHTML);var y = get_nextSibling(x);if (y != null) {document.write("<br />nextsibling: ");document.write(y.nodeName);document.write(" = ");document.write(y.innerHTML + "<br>");} else {document.write("<br>已经是最后一个节点");}function get_previousSibling(n) {// 这里还有一个参数, previousSibling.// 但是后面x.nodeType = 3. 注意一下.var x = n.previousElementSibling;while (x && x.nodeType != 1) {x = x.get_previousSibling;}return x;}var a = document.getElementsByTagName("li")[5];document.write(a.nodeName);document.write(" = ");document.write(a.innerHTML);var b = get_previousSibling(a);if (b != null) {document.write("<br />previousSbling: ");document.write(b.nodeName);document.write(" = ");document.write(b.innerHTML);} else {document.write("<br>已经是第一个节点");}</script></body></html>
在指定节点的最后一个子节点列表之后添加一个新的子节点
语法
appendChild(newnode)
参数
newnode: 指定追加的节点.
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title></head><body><ul id="test"><li>JavaScript</li><li>HTML</li></ul><script type="text/javascript">var otest = document.getElementById("test");// 创建元素var newnode = document.createElement("li"); // 元素类型newnode.innerText = "newElement PHP";otest.appendChild(newnode);</script></body></html>
insertBefore() 方法可在已有的子节点前插入一个新的子节点
语法
node.insertBefore(newNode,node);
参数
newNode 要插入的新节点
node 指定此节点前插入新节点
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>insertBefore() 节点前插入新节点</title></head><body><ul id="test"><li>JavaScript</li><li>HTML</li></ul><script type="text/javascript">var otest = document.getElementById("test");var nd = document.getElementsByTagName("li")[1];// 创建新节点var newNode = document.createElement("li");newNode.innerHTML = "insertBefore HTML";// 指定节点前插入节点.otest.insertBefore(newNode,nd);</script></body></html>
removeChild() 方法从子节点列表中删除某个节点. 如果删除成功, 此方法可返回被删除的节点. 如果失败, 则返回NULL
语法
nodeObject.removeChild(node)
参数
node 必须, 指定需要删除的节点.
注意: 把删除的子节点赋值给 x,这个子节点不在DOM树中,但是还存在内存中,可通过 x 操作。如果要完全删除对象,给 x 赋 null 值
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>清除节点内容</title></head><body><div id="content"><h1>html</h1><h1>php</h1><h1>javascript</h1><h1>jquery</h1><h1>java</h1></div><script type="text/javascript">function clearText() {var content = document.getElementById("content");var nodeArr = new Array;var len = 0;for (var i = 0; i < content.childNodes.length; i++) {if (content.childNodes[i].nodeType == 1) {console.log(content.childNodes[i]);var x = content.removeChild(content.childNodes[i]);document.write("<br>清除的节点内容为: " + x.innerText + "<br>")}}}</script><button onclick="clearText()">清除节点内容</button></body></html>
replaceChild 实现子节点(对象)的替换. 返回被替换对象的引用.
语法
node.replaceChild(newnode, oldnew)
参数
newnode : 必需,用于替换 oldnew 的对象。
oldnew : 必需,被 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');// 创建文本, 这里可以通过ID 获取到 oldnode 中的 innerTextvar newnodeText = document.createTextNode(document.getElementById('oldnode').innerText);// 等同于 var newnodeText = document.createTextNode('javaScript');// 拼接. 把文本放置在i标签中newnode.appendChild(newnodeText);// 获取旧节点var oldnode = document.getElementById('oldnode');// 替换node节点oldnode.parentElement.replaceChild(newnode,oldnode);}</script></body></html>
createElement()方法可创建元素节点. 此方法可返回一个Element对象.
语法:
document.createElement(tagName)
参数:
tagName 字符串值, 这个字符串用来指明创建元素的类型.
注意: 要与appendChild() 或 insertBefore() 方法联合使用, 将元素显示在页面中 .
创建一个按钮:
<script type="text/javascript">var body = document.body;var input = document.createElement("input");input.type = "button";input.value = "创建一个按钮";body.appendChild(input);</script>
效果:在HTML文档中,创建一个按钮。
我们也可以使用setAttribute来设置属性,代码如下:
<script type="text/javascript">var body = document.body;var btn = document.createElement("input");btn.setAttribute("type", "text");btn.setAttribute("name", "q");btn.setAttribute("value", "使用setAttribute");btn.setAttribute("onclick", "javascript:alert('This is a text!');");body.appendChild(btn);</script>
效果:在HTML文档中,创建一个文本框,使用setAttribute设置属性值。 当点击这个文本框时,会弹出对话框“This is a text!”。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号