2015-08-15 113 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>

希望这有助于。