我开始使用的所有浏览器都允许id="myDiv"通过简单地编写来访问元素:
myDiv
Run Code Online (Sandbox Code Playgroud)
见这里:http://jsfiddle.net/L91q54Lt/
无论如何,这种方法似乎记录很少,事实上,我遇到的来源甚至没有提及,而是假设有人会使用
document.getElementById("myDiv")
Run Code Online (Sandbox Code Playgroud)
或者可能
document.querySelector("#myDiv")
Run Code Online (Sandbox Code Playgroud)
即使在事先知道其ID(即不在运行时计算)时也要访问DOM元素.我可以说,后者的方法具有保持代码安全的优势,如果有人无意中尝试myDiv在更广泛的范围内重新定义(虽然不是这么好的想法......),用一些不同的值覆盖它并继续而没有注意到冲突.
但其他那个呢?除了代码设计之外,使用上面的简短形式是否有任何问题,或者我在这里缺少什么?
通过window.someThing访问元素时,"someThing"应该是html元素的名称.但我现在看到的是,我可以通过id以相同的方式访问元素,而无需document.getElementById.什么时候改变了?看起来它适用于Chrome,IE,Firefox 13,但不适用于Firefox 12.
例如:
<div id="MyDiv">Content</div>
<script>
MyDiv.innerHTML = "New Content";
</script>
Run Code Online (Sandbox Code Playgroud)
为什么上面的例子有效?我为什么不这样做:
var MyDiv = document.getElementById('MyDiv');
Run Code Online (Sandbox Code Playgroud)
它是新的东西,还是一直有可能,我只是不知道它?
之间有任何区别
var myfunc = (function () { return function () { ... } }());
Run Code Online (Sandbox Code Playgroud)
和
var myfunc = function () { return function () { ... } }();
Run Code Online (Sandbox Code Playgroud)
它只是一种风格问题还是第一种形式的周围()更多?
我有:
<div id="myDiv1"></div>
<div id="myDiv2"></div>
Run Code Online (Sandbox Code Playgroud)
在JavaScript中,我可以通过编写来设置div innerHTML:
myDiv1.innerHTML = "myDiv1, Hi!"
Run Code Online (Sandbox Code Playgroud)
要么
document.getElementById("myDiv2").innerHTML = "myDiv2, Hi!"
Run Code Online (Sandbox Code Playgroud)
当我可以简单地使用元素Id时,为什么要使用document.getElementById?这是每次还是仅在某些特殊情况下(如简单样本)?
谢谢,
麦克风