问题:
<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
>
|