2012-10-29 74 views
0

我有要求不使用html事件处理程序。所以我试图从脚本中处理它。我做了一个小功能,但它不起作用onkeypress事件监听器不工作

<head> 
<script type="text/javascript"> 
function lld() { 
    document.getElementById('me').onkeypress= myfunction() 
} 

function myfunction(){ 
    alert('hiiiii') 
} 

</script> 
</head> 
<body> 
    <input type="text" id="me" /> 
</body> 
</html> 
+0

为什么否决了,我才问了什么。我只是把这个问题放在我面前 – Carlos

+0

你的意思是你需要避免INLINE事件处理程序 – mplungjan

+0

是的。但是我在这里谈论投票下来 – Carlos

回答

5

试试这个

document.getElementById('me').onkeypress= myfunction; 

function myfunction(){ 
    alert('hiiiii'); 
} 
+0

为什么括号在没有按键的情况下返回值 – Carlos

+0

'document.getElementById('me')。onkeypress'应该是一个指向将在事件触发时调用的函数的指针。在这种情况下,赋值'onkeypress = myfunction;'不是赋值。相反,函数名称指向事件处理程序。 – Xmindz

1

myfunction()是函数返回的值。您需要设置onkeypress函数本身,而不是返回值:

document.getElementById('me').onkeypress= myfunction; 

整个代码可能是:

​​
+0

感谢你的回答对我很好,请帮助我理解函数 – Carlos

+0

中这些()的用法:a = myfunction()将a的值设置为myfunction的返回值。而'a = myfunction'将它设置为函数本身。 –

2

你可以看看这个fiddle

JS代码

function myfunction() { 
    alert('hiiiii'); 
} 

document.getElementById('me').onkeypress= myfunction;