getElementById()方法——通过ID获取元素
标签的id属性值是唯一的,就像“每个人有一个身份证号,通过身份证号就可以找到相对应的人”,在网页中先通过id找到标签,然后进行操作
语法:
document.getElementById("id")
Eg:
结果:null或[object HTMLParagraphElement]
注:获取的元素是一个对象,如果对元素进行操作,我们要通过它的属性或方法。
getElementsByName()方法
返回带有指定名称的节点对象的集合
语法:
document.getElementsByName(name)
与getElementById() 方法不同的是,通过元素的 name 属性查询元素,而不是通过 id 属性。
注:
1、因为文档中的name属性可能不唯一,所以getElementsByName()方法返回的是元素的数组,而不是一个元素。
2、和数组类似也有length属性,可以和访问数组一样的方法来访问,从0开始。
<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function getElements(){ var x=document.getElementsByName("alink"); alert(x.length); } </script> </head> <body> <a name="alink" href="#">链接一</a><br/> <a name="alink" href="#">链接二</a><br/> <a name="alink" href="#">链接三</a><br/> <br/> <input type="button" onclick="getElements()" value="看看几个链接?"> </body> </html>
预览:
getElementsByTagName()方法
返回带有指定标签名的节点对象的集合。返回元素的顺序是他们在文档中的顺序。
语法:
document.getElementByTagName(Tagname)
说明:
1、Tagname是标签的名称,如p、a、img等标签名。
2、和数组类似也有length属性,可以和访问数组一样的方法来访问,所以从0开始。
Eg:通过getElementsByTagName()获取节点
<!DOCTYPE HTML> <html> <head> <title>JavaScript</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <body> <p id="intro">我的课程</p> <ul> <li>JavaScript</li> <li>JQuery</li> <li>HTML</li> <li>JAVA</li> <li>PHP</li> </ul> <script > //获取所有的li集合 var list=document.getElementsByTagName('li'); //访问无序列表:[0]索引 li = list[0]; //获取list的长度 document.write(list.length); //弹出li节点对象的内容 document.write(li.innerHTML); </script> </body> </html>
效果:
区别getElementByID, getElementsByName, getElementsByTagName
以人来举例说明,人有能标识身份的身份证,有姓名,有类别(大人,小孩,老人)等。
1、ID是一个人的身份证,是唯一的,所以通过getElementById获取的是指定的一个人。
2、Name是他的名字,可以重复,所以通过getElementsByName获取名字相同的人集合。
3、TagName可看似某类,getElementByName获取相同类的人集合,如获取小孩这类人,getElementByTagName("小孩")。
代码举例
<input type="checkbox" name="hobby" id="hobby1">音乐
input标签就像人的类别
name属性就像人的姓名
id属性就像人的身份证
方法总结:
注:方法区分大小写
例1:
<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"> 跑步 <input type="button" value = "全选" id="button1"> <input type="button" value = "全不选" id="button1">
1. document.getElementsByTagName("input"),结果为获取所有标签为input的元素,共8个。
2. document.getElementsByName("hobby"),结果为获取属性name="hobby"的元素,共6个。
3. document.getElementById("hobby6"),结果为获取属性id="hobby6"的元素,只有一个,"跑步"这个复选项。
例2:
<!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"> //checkall(),当点击"全选"按钮时,将选中所有的复选项。 //document.getElementsByTagName("input")获取的是所有input标签,包括复选项和按钮,所以要判断是否是复选项,如是选中。 function checkall(){ var hobby = document.getElementsByTagName("input"); for(i=0; i<hobby.length; i++){ if(hobby[i].type == "checkbox") { hobby[i].checked = true; } } } //当点击"全不选"按钮时,将取消所有选中的复选项。 function clearall(){ var hobby = document.getElementsByName("hobby"); for(i=0; i<hobby.length; i++){ hobby[i].checked = false; } } //在文本框中输入输入1-6数值,当点击"确定"按钮时,根据输入的数值,通过id选中相应的复选项。 function checkone(){ var j=document.getElementById("wb").value; //因为元素的id是hobby1、hobby2这样的,"hobby"+j 就是要组成hobby2这样的字符串 var hobby=document.getElementById("hobby"+j); hobby.checked = true; } </script> </body> </html>
getAttribute()方法
通过元素节点的属性名称获取属性的值
语法:
elementNode.getAttribute(name)
说明:
1、elementNode:使用getElementById()、getElementsByTagName()等方法,获取到的元素节点。
2、name:要想查询的元素节点的属性名字
Eg:获取h1标签的属性值
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>getAttribute()</title> </head> <body> <h1 id="alink" title="getAttribute()获取标签的属值" onclick="hattr()">点击我,获取标签的属值</h1> <script type="text/javascript"> function hattr(){ var anode=document.getElementById("alink"); var attr1=anode.getAttribute("id"); var attr2=anode.getAttribute("title"); document.write("h1标签的ID:"+attr1+"<br>"); document.write("h1标签的title:"+attr2); } </script> </body> </html>
setAttribute()方法
增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。
语法:
elementNode.setAttribute(name, value)
说明:
1、name:要设置的属性名
2、value:要设置的属性值
注意:
1、把指定的属性设置为指定的值,如果不存在具有指定名称的属性,该方法将创建一个新属性。
2、类似于getAttribute()方法,setAttribute()方法只能通过元素节点对象调用函数。
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>getAttribute()和setAttribute()方法</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> <h4>以下为li列表title的值,当title为空时,新设置值为"WEB前端技术":</h4> <script type="text/javascript"> var Lists=document.getElementsByTagName("li"); for (var i=0; i<Lists.length;i++) { //使用getAttribut()方法获取元素属性值,保存在变量text。 var text=Lists[i].getAttribute("title"); document.write(text +"<br>"); if(text=="") { //使用setAttribute()方法设置title属性值。 Lists[i].setAttribute("title","WEB前端技术"); document.write(Lists[i].getAttribute("title")+"<br>"); } } </script> </body> </html>