2019年10月10日 星期四

getElementByID()、getElementsByName()、getElementsByTagName()的區別



Web標準下可以通過getElementById(), getElementsByName(), and getElementsByTagName()訪問Documnent中的任一個標籤:

1.getElementById(“ID”)
  getElementById()可以訪問Documnent中的某一特定元素,顧名思義,就是通過ID來取得元素,所以只能訪問設置了ID的元素。
比如說有一個DIVIDdocid
<div></div>
那麼就可以用getElementById("docid")來獲得這個元素。

2.getElementsByName(Name)
  這個是通過name來獲得元素,但不知大家注意沒有,這個是get elemnets,複數elemnets代表獲得的不是一個元素,為什麼呢?
  因為Documnent中每一個元素的ID是唯一的,但NAME卻可以重複。打個比喻就像人的身份證號是唯一的(理論上,雖然現實中有重複),但名字重複的卻很多。如果一個文檔中有兩個以上的標籤NAME相同,那麼getElementsByName()就可以取得這些元素組成一個陣列。
比如有兩個DIV
<div></div>
<div></div>
那麼可以用getElementsByName("docname")獲得這兩個DIV,用getElementsByName("docname")[0]訪問第一個DIV,用getElementsByName("docname")[1]訪問第二個DIV
3.getElementsByTagName(TagName)
  這是通過TagName(標籤名稱)來獲得元素,一個Document中當然會有相同的標籤,所以這個方法也是取得一個陣列
  下面這個例子有兩個DIV,可以用getElementsByTagName("div")來訪問它們,用getElementsByTagName("div")[0]訪問第一個DIV,,用getElementsByTagName("div")[1]訪問第二個DIV
 <head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Byname,tag</title>
<style type="text/css">
<!--
    #docid1,#docid2{
    margin:10px;
    height:400px;
    width:400px;
    background-color:#999;
}
-->
</style>
</head>
<body>
<div name="docname" id="docid1" onClick="bgcolor()"></div>
<div name="docname" id="docid2" onClick="bgcolor()"></div>
</body>
</html>
<script language="JavaScript" type="text/JavaScript">
<!--
function bgcolor(){
    var docnObj=document.getElementsByTagName("div");
    docnObj[0].style.backgroundColor = "black";
    docnObj[1].style.backgroundColor = "black";
}
-->
</script>

總結:
  總結一下標準DOM,訪問某一特定元素儘量用標準的getElementById(),訪問標籤用標準的getElementByTagName(),IE不支援getElementsByName(),所以就要避免使用getElementsByName(),但getElementsByName()和不符合標準的document.all[]也不是全無是處,它們有自己的方便之處,用不用那就看網站的用戶使用什麼流覽器,由你自己決定了。

來源:


沒有留言:

張貼留言