2013-06-29 54 views
1
<HTML> 
<HEAD> 
<TITLE>Mouse Capture</TITLE> 
<SCRIPT> 
function action() { 
if (event.srcElement.id=='DIV1') DIV1.releaseCapture(); 
else DIV1.style.backgroundColor=Math.floor(Math.random()*16777216); 
} 
</SCRIPT> 
</HEAD> 
<BODY onload="DIV1.setCapture();"> 
<DIV ID="DIV1" onclick="action();" STYLE="position:absolute;top:10;left:10;height:100;width:200;background-color:red"> 
</DIV> 
</BODY> 
</HTML> 

以上代碼setCapture()摘自:http://www.htmlgoodies.com/beyond/javascript/advanced-javascript-event-handling.html問題與JS

問:

我嘗試在IE瀏覽器,我點擊某個區域(未DIV1),顏色得到了改變,我再次點擊,顏色沒有改變,似乎顏色只能改變一次,爲什麼?

回答

0

這裏改變了每次點擊DIV之外時改變顏色的代碼,我將它移動到了body上。

<HTML> 
<HEAD> 
<TITLE>Mouse Capture</TITLE> 
<SCRIPT> 
function action() { 
    if (event.srcElement.id=='DIV1') { 
     DIV1.releaseCapture(); 
    } 
    else { 
     DIV1.style.backgroundColor=Math.floor(Math.random()*16777216); 
    } 
} 
</SCRIPT> 
</HEAD> 
<BODY onload="DIV1.setCapture();" onclick="action();"> 
<DIV ID="DIV1" STYLE="position:absolute;top:10;left:10;height:100;width:200;background-color:red" > 
</DIV> 
</BODY> 
</HTML> 

這裏是另一種選擇,用簡單的代碼,並在谷歌Chrome工作太

<HTML> 
<HEAD> 
<TITLE>Mouse Capture</TITLE> 
<SCRIPT> 
function action() { 
    if (event.srcElement.id != 'DIV1') { 
     document.getElementById('DIV1').style.backgroundColor = get_random_color(); 
    } 
} 

function get_random_color() { 
    var letters = 'ABCDEF'.split(''); 
    var color = '#'; 
    for (var i = 0; i < 6; i++) { 
     color += letters[Math.round(Math.random() * 15)]; 
    } 
    return color; 
} 
</SCRIPT> 
</HEAD> 
<BODY onclick="action();"> 
<DIV ID="DIV1" STYLE="position:absolute;top:10;left:10;height:100;width:200;background-color:red" > 
</DIV> 
</BODY> 
</HTML> 
+0

很好,我的問題是:爲什麼只有顏色可以改變一個時間,如果我點擊的div以外? U可以嘗試在div外多次點擊,看看會發生什麼。 – user2294256

+0

我已經更新了答案。 –