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>