![](/img/trans.png)
[英]jQuery $("#someId) vs document.getElementById('someId'), accessing the same DOM element seeing different results
[英]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會顯示此行為。
碼:
<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.