document.getElementById/Name/TagName返回值的小區別
document.getElementById/Name/TagName這三個可以取得元素,分別通過查詢id、name和標籤名。但他們的返回值室友區別的。
下面來看個簡單的例子:
<div id="myDiv" name="sb" class="bd" title="Body text" lang="en" dir="ltr" my_special_attribute="hello!">Some text</div> <script> //document.write(document.getElementById("myDiv")+"<br>"); //document.write(document.getElementsByName("sb")+"<br>"); //document.write(document.getElementsByTagName("div")+"<br>"); document.write(document.getElementById("myDiv").getAttribute("my_special_attribute")); document.write(document.getElementsByName("sb").getAttribute("my_special_attribute")); document.write(document.getElementsByTagName("div").getAttribute("my_special_attribute")); </script>
如程式碼所示:
document.getelementsByName和document.getelementsByTagName在這裡的用法是錯誤的。原因是getelementById返回的是物件(具有相同id屬性的第一個),getelementsByName和getelementsByTagName返回的是陣列物件。
如果要使用getelementsByName和getelementsByTagName返回具體的物件,就要進行索引,程式碼如下:
document.write(document.getElementsByName("sb")[0].getAttribute("my_special_attribute")); document.write(document.getElementsByTagName("div")[0].getAttribute("my_special_attribute"));
多寫一點這段程式碼裡容易犯的小錯誤(與本文主題無關),就是換行的實現。我們都知道在HTML中換行用</br>(或<br>),在javascript中換行用轉義符\n。
但在本段程式碼中document.write()用的<br>,和上述規則不同,這是因為document.write()的內容是輸出到HTML中,所以採用<br>。