2010-09-24 21 views
0

根据头第一本书,在HTML和Javascript之间分离表示层和行为总是很好的。如果在初始化函数中分配了事件处理函数,如何传递参数?

他们告诉我不要做:

<textarea onclick="showAlert()"></textarea> 

而是做如下:

下面的例子分开HTML代码(结构)的行为。

<html> 
<head> 

<script type="text/javascript"> 
window.onload = init; 

function init() { 
    $('txt_area').onclick = showAlert; 
} 

function showAlert(say) { 
    alert(say); 
} 
</script> 
</head> 
<body> 
<textarea id="txt_area"></textarea> 
</body> 
</html> 

这使得HTML(结构)看起来干净,当页面加载时,init()函数初始化“行为”部分。我明白到目前为止。

但后来我想知道我该如何通过showAlert()函数的参数?

下面不起作用,只要页面加载就会调用showAlert(),这不是我想要的,因为它需要被触发onclick。

function init() { 
    $('txt_area').onclick = showAlert("hello"); 
} 

是否可以传递参数给showAlert()函数,但仍分开的行为和结构?

UPDATE

忘了提..我使用的原型。

回答

3

将你的代码包装在一个函数中。

$('txt_area').onclick = function() { 
    showAlert("hello"); 
}; 
+0

这将肯定会给出错误;) – Reigel 2010-09-24 07:16:11

+0

谢谢,完全没有想到它,JS可以做到这一点! – 2010-09-24 07:17:25

+0

@Reigel:我测试了提供的代码,它似乎工作得很好。 – 2010-09-24 07:19:53

相关问题