簡體   English   中英

document.getElementById(“someId”)Vs. someId

[英]document.getElementById(“someId”) Vs. someId

這個問題可能看起來很愚蠢,但是使用document.getElementById(“someId”)Vs訪問元素(使用id“someId”)之間的區別是什么。 只是輸入someId?

例如:

document.getElementById("someId").style.top = "12px";

VS

someId.style.top = "12px";

這是一個示例代碼http://jsfiddle.net/pRaTA/ (我發現它在firefox中不起作用)

不同之處在於雖然someId在某些瀏覽器中有效,但document.getElementById("someId")實際上符合W3C標准。

聲明元素DOM id並不意味着它在所有瀏覽器中都可用作全局變量。 唯一的交叉兼容方式是先做。

var someId = document.getElementById("someId");

編輯:我制作了這個測試代碼,用於驗證基於webkit的瀏覽器似乎在沒有首先聲明的情況下將id作為var提供。 根據這個 ,也是IE會顯示此行為。

  • Firefox:object / undefined
  • Safari:對象/對象
  • Chrome:對象/對象
  • IE:對象/對象(未驗證)

碼:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>

在客戶端腳本中,我們使用document.getElementById來獲取網頁中的元素obj。 要從DOM及其屬性和方法中檢索特定元素,您需要使用getElementById方法。 在Jquery中你可以簡單地做var objX = $('#id')

如果直寫下來就不能勝任這項工作。 因為如何在不遍歷文檔的情況下從DOM中提取元素obj。 document.getElementById方法將從文檔中提取元素信息。 我希望這是有道理的。

僅使用someId是一種選擇元素的舊方法(我認為這是由IE實現的)。 document.getElementById是適用於所有瀏覽器的標准版本。

考慮到您只支持舊IE瀏覽器的情況。 document.getElementById更可靠,更易讀。 如果您使用所有數字的ID,則可靠。

例如:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't

訪問元素作為以元素ID命名的全局對象的屬性(您的第二個示例)是一種起源於IE並且已被Safari和Chrome復制的便利。 這是一個非常糟糕的主意,你不應該使用它。 主要問題是命名沖突(例如,具有完全有效ID的元素,例如“alert”或“document”)。

另一方面, document.getElementById()是長期建立的DOM標准,除了一些愚蠢的IE漏洞之外 ,它是萬無一失的。 始終優先使用它而不是其他形式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM