2012-10-29 58 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;