2016-11-20 8 views
0

私はこのように開いたモーダルボックスを持っています。モーダルの外側をクリックしてモーダルボックスを閉じることができません

<div class="modal-open" data-modal="modal-window-one">Modal1</div> 

var btn = document.getElementsByClassName("modal-open"); 
for (var i = 0; i < btn.length; i++) { 
var thisBtn = btn[i]; 
thisBtn.addEventListener("click", function(){ 
var modal = document.getElementById(this.dataset.modal); 

modal.className = "modal-reveal"; 
}, false); 
} 

そして、私がオープンしました。このモーダルの外側の任意の場所をクリックすることで、このモーダル近くを持ってしようとしています。

ここに私のコードです。

window.addEventListener('mouseup', function(event){ 
var box = document.getElementsByClassName('modal-reveal'); 
if (event.target != box && event.target.parentNode != box){ 
    box.className = "modal-hidden"; 
} 
}); 

私はここで間違っていますか?いいえコンソールエラー&私はこのコードが動作しない理由を理解できません。以下のようなものに

var box = document.getElementsByClassName('modal-reveal'); 

var box = document.getElementsByClassName('modal-reveal')[0]; 

.getElementsByClassName戻りHTMLCollectionhttps://jsfiddle.net/mspsys/z46woxv0/

+0

使用コードスニペットやjsfiddleのようなコード。コードをコピーしてどこかに貼り付けることなくコードを実行して編集することができれば、他の人が手助けする方が簡単になります。 –

+0

私のフィドルです。 https://jsfiddle.net/mspsys/z46woxv0/ – HackYa

答えて

0

あなたはこの行を変更する必要があります。

は、ここに私のバイオリンです。 1つの要素を取得する必要があります。

+0

ここから抜け出す! ええ、私はそれを知っていた!!!! LOL私はとても恥ずかしいです。 getElementsById()をgetElementsByClassに変更しました。 &私はそれに気付かなかった。ありがとう。私は今、馬鹿のように感じる。ハハ – HackYa

0

変更この

window.addEventListener('mouseup', function(event){ 
    var box = document.getElementsByClassName('modal-reveal'); 
    if (event.target != box && event.target.parentNode != box){ 
     box[0].className = "modal-hidden"; 
    } 
}); 
関連する問題