论坛首页 Web前端技术论坛

html控件id不能与javascript 方法名重名?

浏览 5371 次
精华帖 (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 上也一样, 不知道 什么规范规定的?
   发表时间:2006-05-24  
firefox 报错是 test is not a function ....

明明alert框 看到是一个function 啊.
0 请登录后投票
   发表时间:2006-05-25  
&lt;input type="button" value="Addddddddddd" onclick="alert(test);"

看看alert出来的是什么!
应该是scope问题。
0 请登录后投票
   发表时间:2006-05-25  
http://forum.iteye.com/viewtopic.php?t=20044

0 请登录后投票
   发表时间:2006-05-25  
去掉form元素的话,可以执行。
是不是因为浏览器处理事件的时候会首先查找form表单中的html元素,并为form中的元素建立对象?
那没有form的时候难道就不为html元素建立对象?

我也想知道这个问题,希望了解的人详细说一下
0 请登录后投票
   发表时间:2006-05-25  
这个真是怪了,函数是对了,但使用test()做为函数名就是不成
0 请登录后投票
   发表时间:2006-05-25  
不奇怪..
根据zkj_beyond兄弟的文章.
  浏览器运行以后....
创建了
window.test()方法
document.forms["ttt"]的表单对象
document.forms["ttt"].test 的input对象
你的点击事件发生在 ttt这个表单对象里.

根据 牛书的javascript访问变量原则..先读取内部的,读取不到再读外部的是不是有这个变量...

那么 按钮事件先读取 test的input对象 就提示了..
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics