JavaScript 之 getElementByID() getElementsByName() getElementsByTagName()的區別

來源:互聯網
上載者:User
Web標準下可以通過getElementById(), getElementsByName(), and getElementsByTagName()訪問Documnent中的任一個標籤:  1 getElementById(“ID”)getElementById()可以訪問Documnent中的某一特定元素,顧名思義,就是通過ID來取得元素,所以只能訪問設定了ID的元素。比如說有一個DIV的ID為docid:<div id="docid"></div>那麼就可以用getElementById("docid")來獲得這個元素。

2  getElementsByName(“Name”)這個是通過name來獲得元素,但不知大家注意沒有,這個是get elemnets,複數elemnets代表獲得的不是一個元素,為什麼呢?因為Documnent中每一個元素的ID是唯一的,但NAME卻可以重複。打個比喻就像人的社會安全號碼是唯一的(理論上,雖然現實中有重複),但名字重複的卻很多。如果一個文檔中有兩個以上的標籤NAME相同,那麼getElementsByName()就可以取得這些元素組成一個數組。 比如有兩個DIV:<div name="docname" id="docid1"></div><div name="docname" id="docid2"></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[]也不是全無是處,它們有自己的方便之處,用不用那就看網站的使用者使用什麼瀏覽器,由你自己決定了。 

Javascript中的getElementById十分常用,但在標準的頁面中,一個id只能出現一次,如果我想同時控制多個元素,例如點一個連結,讓多個層隱藏,該怎麼做?用class。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.