javaScript:将参数传递给eventListener

时间:2014-12-05 15:20:55

标签: javascript event-listener

我试着制作一些东西而且我制作了这段代码,但是当我按下按钮时它会发生一秒然后消失,我是不是通过了错误的论点或什么? 这里的代码是:

{
        var fil1;
        var rtextDiv;
        for (var i = 0; i < dmsg.getElementsByClassName('refilter').length; i++) {
            var refilterInput = dmsg.getElementsByClassName('refilter')[i];
            refilterInput.addEventListener('keyup', firstfilter(rtextDiv, fil1,refilterInput));
        }

    };

    function firstfilter(e, rtextDiv, fil1, refilterInput) {
        rtextDiv = refilterInput.parentNode.parentNode.getElementsByClassName('rtext')[0];
        while (rtextDiv.firstChild) {
            rtextDiv.removeChild(rtextDiv.firstChild);
        }
        fil1 = filteredPropertiesTable(res, refilterInput.value);
        rtextDiv.appendChild(fil1);
    };

编辑评论说:

{
        var fil1;
        var rtextDiv;
        for (var i = 0; i < dmsg.getElementsByClassName('refilter').length; i++) {
            var refilterInput = dmsg.getElementsByClassName('refilter')[i];
            refilterInput.addEventListener('keyup', function()
           {firstfilter(rtextDiv,fil1,refilterInput)(rtextDiv, fil1,refilterInput)});
         );
        }

    };

    function firstfilter(e, rtextDiv, fil1, refilterInput) {
        rtextDiv = refilterInput.parentNode.parentNode.getElementsByClassName('rtext')[0];
        while (rtextDiv.firstChild) {
            rtextDiv.removeChild(rtextDiv.firstChild);
        }
        fil1 = filteredPropertiesTable(res, refilterInput.value);
        rtextDiv.appendChild(fil1);
    };

真的知道了吗?我可以通过这种方式传递论据吗?

1 个答案:

答案 0 :(得分:0)

这里你实际上正在执行处理程序:

refilterInput.addEventListener('keyup', firstfilter(rtextDiv, fil1,refilterInput));

您应该只显示处理程序名称:

refilterInput.addEventListener('keyup', firstfilter);

可以改进处理程序:

function firstfilter(e) {
    var rtextDiv = this.parentNode.parentNode.getElementsByClassName('rtext')[0];
    while (rtextDiv.firstChild) {
        rtextDiv.removeChild(rtextDiv.firstChild);
    }
    var fil1 = filteredPropertiesTable(res, this.value); // you didn't say what is res
    rtextDiv.appendChild(fil1);
};