我正在使用以下代码更改复选框的状态:
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 。
我找到了解决方案并作为答案发布。
最后我解决了这个问题:
首先我开发了一个功能:
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)