2013-06-29 2 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> 

Приведенный выше код взят из: http://www.htmlgoodies.com/beyond/javascript/advanced-javascript-event-handling.htmlпроблема с SetCapture() в Js

Вопрос:

Я попробовал его в IE, я нажал определенную область (не Div1), цвет был изменен, Я снова щелкнул, цвет не изменился, кажется, что цвет может меняться только один раз, почему?

ответ

0

Здесь вы можете изменить код, который меняет цвет каждый раз, когда вы нажимаете вне DIV, я перешел к onclick to 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> 

Вот еще одна альтернатива, с простым кодом и работает на Google 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

Я обновил ответ. –