私はそれを外にクリックすると消えるポップアップdivを作りたいと思います。私はjQueryや何かではなく、純粋なjsが必要です。 だから私はdiv要素が消えるために作る次...javascript要素body.onclickアタッチイベントsetTimeout
機能します:
function closePopUps(){
if(document.getElementById('contact-details-div'))
document.getElementById('contact-details-div').style.display = 'none';
//...same code further...
}
function closePopUpsBody(e){
//finding current target - http://www.quirksmode.org/js/events_properties.html#target
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
//is we inside div?
while (targ.parentNode) {
//filtering "Close" button inside div
if (targ.className && targ.className == 'closebtn')
break;
if (targ.className && targ.className == 'contact-profile-popup')
break;
targ = targ.parentNode;
}
//if it not a div, or close button, hide all divs and remove event handler
if ((targ.className && targ.className == 'closebtn')
|| !(targ.className && targ.className == 'contact-profile-popup')) {
if(document.getElementById('contact-details-div'))
document.getElementById('contact-details-div').style.display = 'none';
//...some more code here...
document.body.onclick = null;
}
}
多分このコードは醜いですが、これは...
主な問題は、とき主な問題ではありません私は身体にイベントを添付し、すぐに実行されます!すぐに消滅しても、私はそれを見ていない。
<tr onclick="
closePopUps();
document.getElementById('contact-details-div').style.display='block';
document.body.onclick = closePopUpsBody;
return false;">
ただし、かっこは使用しないと実行されません。
document.body.onclick = closePopUpsBody(); //this executes
document.body.onclick = function(){closePopUpsBody()}; //this is not
document.body.onclick = closePopUpsBody; //this is not
は最終的に私は、この決定
<tr onclick="
closePopUps();
document.getElementById('contact-details-div').style.display='block';
setTimeout('document.body.onclick = closePopUpsBody;', 500);
return false;">
で終わったが、私は、これは狂気だと思います。そう、私は何を間違っているの?
ライブサンプルへのリンクを提供することはできますか? 'document.body.onclick = closePopUpsBody'は期待通りに動作するはずです。 –
'document.body.onclick = closePopUpsBody'をクリックすると、正確に何が起こっていますか?何かエラーが出ますか? –
お返事ありがとうございました、あなたはすべて正しかったです - tr inline onclickコードでstopPropagationがない場合の問題 – llamerr