选择标记onchange无法在移动版

时间:2016-05-13 00:00:53

标签: javascript html

我在这样的选择标签上设置onchange事件:

Dictionary.prototype.setSelectEvent = function setSelectEvent() {
    var selects = document.querySelectorAll('.dictionary-page__select');

    if (selects) {
        for (var i = 0; i < selects.length; i++) {
            selects[i].onchange = function() {
                this.onChange();
            }.bind(this);
        }
    }
};

这在桌面上运行良好。事件已正确设置并触发,没有错误。在移动设备上,事件根本没有被解雇。我也试过onblur,但那没有做任何事情。使用vanilla javascript,我如何在select标签上设置一个事件并让它在移动设备上运行?

解决方案: 第三方库覆盖了桌面事件,但不是移动桌面事件。不得不在事件中传递选择对象。

Dictionary.prototype.setSelectEvent = function setSelectEvent() {
    var selects = document.querySelectorAll('.dictionary-page__select');

    var that = this;

    if (selects) {
        for (var i = 0; i < selects.length; i++) {
            selects[i].onchange = function() {
                that.onChange(this);
            };
        }
    }
};

1 个答案:

答案 0 :(得分:1)

Dictionary.prototype.setSelectEvent = function setSelectEvent() {
    var selects = document.querySelectorAll('.dictionary-page__select');

    for (var i = 0; i < selects.length; i++) {
        selects[i].onchange = this.onChange.bind(this);
    }
};

前面的代码应该执行您正在寻找的内容,通过NodeList进行集成,直到selects.length。您还注意到,您可以直接绑定到this,每次调用onChange上的Dictionary方法时,我们都不需要定义新的onChange函数。

编辑:删除了转换为数组。