ユーザーがページ上の特定のボタンをクリックするたびにモーダルを開くはずの私のWebページには簡単なscript
があります。event.targetが指定された要素でなくても文が実行されているif文
しかし、何らかの理由で、イベントターゲットが指定された要素でない場合でも、モーダルオープンを引き続きトリガーします。明らかに、これは起こるはずではありません。私はそれがなぜなのか混乱しています。ここで
はJavaScriptのです:
document.onclick = function(e){
var modalTrigger = document.querySelectorAll(".ts-modal__trigger"),
modals = document.querySelectorAll(".ts-modal"),
i;
for(i = 0; i < modalTrigger.length; i++){
if(e.target == modalTrigger[i] || modalTrigger[i].children){
modal = document.getElementById(modalTrigger[i].getAttribute("data-activemodal"));
// these two will trigger not matter if the if statement is true
document.body.style.overflow = "hidden";
modal.style.display = "block";
}
}
}
そして、これはHTMLです:
<!-- trigger !-->
<a class="ts-modal__trigger" data-activemodal="ts-main-feed_status-comments-overlay">
<span data-rot="11">11</span>
</a>
<!-- modal !-->
<div class="ts-modal" id="ts-main-feed_status-comments-overlay"></div>
すべてのヘルプは高く評価され、
感謝。
'||'演算子は、あなたが思うように動作しません。ターゲットがモーダルトリガーかその子のいずれかであるかどうかを調べるif条件をテストしますか? – nnnnnn
またはオペレータは、これらの条件のいずれかが満たされているかどうかをチェックします。 e.targetが定義されていないのに2番目の条件が真であっても、forループが実行されます。 –
@nnnnnnいいえ、私はそれがそうであることを知っていました。しかし、この男は、それを行うことが大丈夫だと言った(http://stackoverflow.com/a/42872398/5859909)、私はそれを正しく変更した場合、それは動作しませんでした。 –