2015-08-15 80 views
-1
<!doctype html> 
<html> 
<head> 
<title></title> 
<!--binding handlers to object--> 
<script type="text/javascript"> 
<!-- 
function showAuthor() 
{ 
alert("oscar wilde"); 
} 
function enableEvent() 
{ 
document.getElementById('someText').attachEvent("onmouseover",showAuthor);    
}    
function disableEvent() 
{ 
someText.detachEvent("onmouseover",showAuthor); 
} 
//--> 
</script> 
</head> 
<body onload="enableEvent();"> 
<em id="someText">we may be in the gutter ,but some of us are looking at the stars</em> 
<form action="#" method="get"> 
<input type="button" value="Attach event" onclick="enableEvent();" /> 
<input type="button" value="Detach event" onclick="disableEvent();" /> 
<input type="button" value="show author" onclick="showAuthor();" /> 
</form> 
</body> 
</html> 

我已經使用上述代碼來實現事件處理程序,但是當我執行程序事件處理程序沒有附加。爲什麼?事件沒有被添加

+0

你似乎在'onclick'上附加了'mouseover'事件。所以,你是否試圖僅在'mouseover'上顯示'showAuthor',並且只在第一次點擊元素時顯示'showAuthor'? –

回答

0

document.getElementById('someText').attachEvent("onmouseover",showAuthor);    

應該是這樣的

document.getElementById('someText').addEventListener("mouseover",showAuthor, false); 

你並不需要附加一個事件,而是要添加事件偵聽器。

此外,你不想分離任何活動,但要刪除一個事件監聽器,它的語法是這樣的:

document.getElementById("someText").removeEventListener("mouseover",showAuthor, false); 

var someText = document.getElementById("someText"); 
 

 
function showAuthor(){ 
 
    alert("oscar wilde"); 
 
} 
 

 
function enableEvent(){ 
 
    someText.addEventListener("mouseover",showAuthor, false);   
 
}    
 

 
function disableEvent(){ 
 
    someText.removeEventListener("mouseover",showAuthor, false); 
 
}
<body onload="enableEvent()"> 
 
<em id="someText">we may be in the gutter ,but some of us are looking at the stars</em> 
 
<form action="#" method="get"> 
 
<input type="button" value="Attach event" onclick="enableEvent()" /> 
 
<input type="button" value="Detach event" onclick="disableEvent();" /> 
 
<input type="button" value="show author" onclick="showAuthor()" /> 
 
</form> 
 
</body>

有關詳細說明以上,請看下面的鏈接:

+0

我剛剛執行了代碼,但程序仍然不能正常工作 – Dilkush

+0

@Dilkush對不起,我忘記從事件中刪除部分內容。這不是必需的。 – Christos

0

我猜測,你需要使用addEventListener。當使用addEventListener時,您不需要在事件名稱中加上「on」前綴。

段:

<script type="text/javascript"> 
 
    function showAuthor() { 
 
    alert("oscar wilde"); 
 
    } 
 

 
    function enableEvent() { 
 
    document.getElementById('someText').addEventListener('mouseover', showAuthor); 
 
    } 
 

 
    function disableEvent() { 
 
    document.getElementById('someText').removeEventListener('mouseover', showAuthor); 
 
    } 
 
</script> 
 

 
<body onload="enableEvent();"> 
 
    <em id="someText">we may be in the gutter ,but some of us are looking at the stars</em> 
 
    <form action="#" method="get"> 
 
    <input type="button" value="Attach event" onclick="enableEvent();" /> 
 
    <input type="button" value="Detach event" onclick="disableEvent();" /> 
 
    <input type="button" value="show author" onclick="showAuthor();" /> 
 
    </form>

希望這有助於。