在javascript上动态添加的eventListener不能完全正常工作

时间:2015-06-08 11:52:22

标签: javascript events click addeventlistener

我的所有eventListeners工作都有问题......我需要:

  • 每个'标签'HTML标记的一个'点击'(点击后删除它们)
  • 退格键上的
  • 一个' keydown '(它会从文档中删除最后一个'标签'。)

两者都调用一个函数,将一个元素作为参数。在下面的代码中, keydown 无效......任何人都可以看到问题吗? 谢谢!

HTML:

<div id="motscles">
    <label class="motcle">pouet</label>
    <label class="motcle">youpi</label>
    <label class="motcle">...</label>
    <input class="inputMotsCles" id="motsclesInput" required="true" type="text">
</div>

JS:

var motsclesList = document.getElementById('motscles');
var motsclesInput = document.getElementById('motsclesInput');
var motscle = document.querySelectorAll('.motcle');

// on keydown
motsclesInput.addEventListener("keydown", function (e) {
    if (e.which == 8) { // backspace
        supprimeMotCle(motsclesInput.previousElementSibling);
    }
});

// click a "
for (var i = 0; i < motscle.length; i++) {
    motscle[i].addEventListener('click', supprimeMotCle(motscle[i]));
}


// the function removes the element given in parameter
function supprimeMotCle(blocMotCle) {

    return function () {
        blocMotCle.remove();
    };
}

1 个答案:

答案 0 :(得分:0)

function supprimeMotCle(blocMotCle) {

    return function () {
        blocMotCle.remove();
    };
}

...正在返回一个函数,这绝对不是你想要获得的。而是删除return语句,因为你不需要它。

这将有效:

// the function removes the element given in parameter

function supprimeMotCle(blocMotCle) { 
    blocMotCle.remove();
}