js直接用id名获取对象,这么用好吗
js直接用id名获取对象,这样用好吗
问题:
<div id="a"></div>
一般我都会用
var b=document.getElementById("a");
这样来获取
可貌似不用这个,直接用id名也可以
如
alert(a);
一样的效果,这两种方法那个好为什么可以通过id直接访问对象,是因为所有的元素ID都相当于一个保存对象的全局变量。
回答:
通过id直接访问对象还存在兼容问题。
建议用document.getElementById标准的形式获取对象。
如果一个元素符合下面两条规则中的任一条,则window对象中必须要有与之对应的一个属性,属性值就是这个对象。
如果一个元素拥有ID属性,那么ID属性的属性值就会成为window对象的属性名.
如果一个元素拥有name属性,那么name属性的属性值就会成为window对象的属性名.但这个元素的标签名必须是: a, applet, area, embed, form, frame, frameset, iframe, img, object,其中的一个。
但是如果网页有两个相同ID的元素,就有点差异了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< html >
< head >
< script type = "text/javascript" >
function getInput() {
var mydiv = document.getElementById("div1");
alert(mydiv.length);//mydiv是DispHTMLElement
alert(div1.length);//div1是DispHTMLElementCollection
}
</ script >
</ head >
< body >
< div id = "div1" >123</ div >
< div id = "div1" >456</ div >
< input type = "button" value = "Test" onclick = "getInput()" />
</ body >
</ html >
|