精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-29
正常获取表单的ID值的语法为:<表单对象>.id,这个大家都知道。不过下面的代码,看看会返回什么:
弹出对话框在IE下显示的内容为“[object]”,这个对象是那个名字为id的INPUT元素,FF还没有测试,估计也是出错。:( 大家在开发程序的时候一定要注意哟!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-29
呵呵,楼主真是细心啊~!
|
|
返回顶楼 | |
发表时间:2007-10-29
晕死,这个当然要返回一个对象啊,你又不是求值的.alert(document.getElementById('create_data').id.value);你试一下
|
|
返回顶楼 | |
发表时间:2007-10-29
能把元素名取为“id”的人也是蛮有创意的人。
|
|
返回顶楼 | |
发表时间:2007-10-29
二楼不要不知根源的在那里乱说
实际情况是这样的,lz最后的考虑也有错,在FF下是不会错的。 因为在ie下,可以通过"表单对象.字段name"来直接访问表单里的字段对象,即form.fieldName,所以上例中,当获得了表单对象后,其中的id属性其实已经变成了那个input控件,于是访问后得到[object]那是正常的。而如果根据二楼所说,要加.value那是什么情况呢?当然是取得那个input控件的value属性值。 由于这个是ie下的特有方式,所以在ff下,不会产生上述的情况,object.id返回的,还是正常的元素id号。 |
|
返回顶楼 | |
发表时间:2007-10-29
ls不是那样的,不管getELementById或者getElementsByTagName不论ie ff都会把下属元素的id name扩展为自己的属性,所以alert(document.getElementById('create_data').id);在ff下一定会得到input元素,这是毫无疑问的,看下面代码
<input id="length" value="22" type="text" /> <input id="aaa" name="bbb" type="reset" /> <script> alert(document.getElementsByTagName("input").length) </script> 这个才是bug,ie还是扩展length导致无法遍历元素,而ff却保护了length属性,没有覆盖,id被覆盖很正常,你可以getAttribute吗 |
|
返回顶楼 | |
发表时间:2007-10-30
把名字取成id的少见,但把按钮id取成submit的不少...
|
|
返回顶楼 | |
发表时间:2007-10-30
名字取成ID的确实牛NR
|
|
返回顶楼 | |
发表时间:2007-10-30
其实没什么大不了,lz说的".id"根本不是标准方法,那是在没有DOM之前的DOM 0级API,正确方法是getAttribute,当然就是今天ie也不支持setAttribute的事件绑定,这些老API设计时多少都有点bug
|
|
返回顶楼 | |
发表时间:2007-10-30
alert(document.getElementById('create_data')["id"]);
|
|
返回顶楼 | |