浏览 5370 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-05-24
<html> <script language="javascript"> function test();{ alert("test");; } function test2();{ alert("test");; alert(test);; } </script> <form name="ttt" action="test" > <input id="test" type="text" value="1111"> <input type="button" value="Addddddddddd" onclick="test();;" </form> </html> 上面这段代码在IE6中会报错说,对象不支持这个属性或者方法.但是 如果 onclick="test2()" 则可以执行,并且 alert(test) 出来可以看到 test 确实是一个js 方法 而不是 那个 text 框, 其他控件如 form 的id 和 js 方法重名 也会发生这个问题, 在firefox 上也一样, 不知道 什么规范规定的? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-05-24
firefox 报错是 test is not a function ....
明明alert框 看到是一个function 啊. |
|
返回顶楼 | |
发表时间:2006-05-25
<input type="button" value="Addddddddddd" onclick="alert(test);"
看看alert出来的是什么! 应该是scope问题。 |
|
返回顶楼 | |
发表时间:2006-05-25
http://forum.iteye.com/viewtopic.php?t=20044
看 |
|
返回顶楼 | |
发表时间:2006-05-25
去掉form元素的话,可以执行。
是不是因为浏览器处理事件的时候会首先查找form表单中的html元素,并为form中的元素建立对象? 那没有form的时候难道就不为html元素建立对象? 我也想知道这个问题,希望了解的人详细说一下 |
|
返回顶楼 | |
发表时间:2006-05-25
这个真是怪了,函数是对了,但使用test()做为函数名就是不成
|
|
返回顶楼 | |
发表时间:2006-05-25
不奇怪..
根据zkj_beyond兄弟的文章. 浏览器运行以后.... 创建了 window.test()方法 document.forms["ttt"]的表单对象 document.forms["ttt"].test 的input对象 你的点击事件发生在 ttt这个表单对象里. 根据 牛书的javascript访问变量原则..先读取内部的,读取不到再读外部的是不是有这个变量... 那么 按钮事件先读取 test的input对象 就提示了.. |
|
返回顶楼 | |