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 >

猜你喜欢

转载自tommy-lu.iteye.com/blog/2289465
今日推荐