为什么事件冒泡不起作用?

时间:2017-07-19 19:54:04

标签: javascript event-bubbling dom-events

我认为我理解事件冒泡但我的代码无法正常工作:

<div id="write">
    <form method="post" tabindex="1" onsubmit="myfunc()">
        <textarea></textarea>
        <input />Another form element
        <input />Another form element
        <input type="submit">
    </form>
</div>

<p>Some other text and images...</p>
<div id="overlay"></div>
<script>
    //var formele = document.querySelectorAll("#write form, #write form *");
    var formele = document.querySelectorAll("#write form");
    for (var i = 0; i < formele.length; i++) {
        formele[i].addEventListener("focus", function () {
            overlay.classList.add("active");
        });
        formele[i].addEventListener("focusout", function () {
            overlay.classList.remove("active");
        });
    }
</script>

当表单或内部元素获得焦点或单击时,此代码应使页面的其余部分变暗。我通过以下方式了解事件冒泡: 当表单的子项获得焦点时,它没有添加事件侦听器。因此焦点事件冒泡到表单元素并触发它的事件监听器。 但是它没有那样工作:如果我将事件监听器添加到表单中,则只有在单击textarea或输入内部时才会发生任何事情。我必须向子元素添加事件监听器才能使其工作。 谁能解释一下?显然,我对事件冒泡的理解是错误的。

0 个答案:

没有答案
相关问题