更改复选框的 Javascript

Maj*_*asi 7 javascript

我正在使用以下代码更改复选框的状态:

document.getElementById('checkall').onclick = function(){
     inputs = VARIABLE.querySelectorAll('input[type=checkbox]');
     for(i=0; i<inputs.length; i++) 
          inputs[i].checked = true; 
}
Run Code Online (Sandbox Code Playgroud)

这部分工作正常。

我正在创建复选框(这些代码要求):

mainFrameInput = document.createElement("input"); mainFrameInput.className = "item"; mainFrameInput.style.display='none'; mainFrameInput.setAttribute('type', 'checkbox'); mainFrameInput.setAttribute('id', GnId);
Run Code Online (Sandbox Code Playgroud)

这部分也很好用

此时我想要一个在复选框更改时运行的函数,因为它可以通过多种方式更改。

我正在使用 JavaScript 创建复选框,并希望使用 JavaScript NOT JQUERY 处理 onchange。

我测试了 CHECKBOX_VARIABLE.onchange = function{} 但是当我用上面的代码更改时它不会调用,当我点击每个复选框时它只工作 CHECKBOX_VARIABLE.onclick 。

我找到了解决方案并作为答案发布。

Maj*_*asi 1

最后我解决了这个问题:

首先我开发了一个功能:

    function fireEvent(element,event){
    if (document.createEventObject){
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}
Run Code Online (Sandbox Code Playgroud)

并在更改复选框状态时调用:

fireEvent(inputs[i],'change');
Run Code Online (Sandbox Code Playgroud)

并在创建复选框时添加更改事件:

mainFrameInput.onchange = function(){ 
        if (this.checked)
        {
            console.log('checked');
        }
        else
        {
            console.log('un checked');
        }
    }
Run Code Online (Sandbox Code Playgroud)