`

Prototype中的Event.observe用法

阅读更多
使用Event.observe可以更好地让页面元素与js代码分离,如下面的代码.
<html>
<head>
	<title>测试</title>
	<script type="text/javascript" src="prototype-1.5.1.2.js"></script>
</head>
<body>
请输入:<input type="text" name="birth" id="birth"/><br/>
<input id="btn_test" type="button" value="测试" />
</body>
</html>
<script type="text/javascript" language="javascript">
		    	Event.observe('btn_test', 'click', test);
		    	function test(){
		    	    alert("弹出消息!!!");
		    	}
</script>


不过,我如果将function test(){}方法变成一个接受参数的方法,那么页面一载入就会执行test弹出消息的方法,而不是等着按钮被点击后执行test,不知道为什么会这样?
<html>
<head>
	<title>测试</title>
	<script type="text/javascript" src="prototype-1.5.1.2.js"></script>
</head>
<body>
请输入:<input type="text" name="birth" id="birth"/><br/>
<input id="btn_test" type="button" value="测试" />
</body>
</html>
<script type="text/javascript" language="javascript">
		    	Event.observe('btn_test', 'click', test("弹出消息!!!"));
		    	function test(msg){
		    	    alert(msg);
		    	}
</script>

注:我用firefox运行,在错误控制台,看到了有如下的异常信息.
引用

错误: uncaught exception: [Exception... "Could not convert JavaScript argument"  nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)"  location: "JS frame :: file:///C:/Documents%20and%20Settings/Administrator/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97/prototype-1.5.1.2.js :: anonymous :: line 3014"  data: no]


有哪位大虾能帮忙解答一下此问题?
分享到:
评论
2 楼 brown802 2013-04-03  
Event.observe('test', 'click',function test(msg){ 
                    alert("弹出消息!!!"); 
                }  ); 
我感觉应该是页面顺序加载,之后执行到test()函数就执行,但你写的监听中observe在执行时,这应该是一个函数名称!或是你自己写的函数体,不应该写一个携带参数的函数!
1 楼 LynsaHuang 2009-02-02  
问题知道原因了么?
贴出来吧

相关推荐

Global site tag (gtag.js) - Google Analytics