Javascript 为什么在手动设置目标时不调度OnChange事件
我对JavaScript如何处理Javascript 为什么在手动设置目标时不调度OnChange事件,javascript,checkbox,dom-events,onchange,Javascript,Checkbox,Dom Events,Onchange,我对JavaScript如何处理更改事件感到困惑,我正在寻找一些见解 假设我们有两个HTML控件;一个复选框和一个按钮,我想使用JS显示一条消息,说明复选框从选中更改为未选中的次数 <input type="checkbox" id="cb" /> <button id="btn">Change Checkbox</button> <div id="msg"></div> 在这里测试一下 请注意,当复选框以编程方式设置为cb.chec
更改事件感到困惑,我正在寻找一些见解
假设我们有两个HTML控件;一个复选框和一个按钮,我想使用JS显示一条消息,说明复选框从选中
更改为未选中
的次数
<input type="checkbox" id="cb" />
<button id="btn">Change Checkbox</button>
<div id="msg"></div>
在这里测试一下
请注意,当复选框
以编程方式设置为cb.checked=”时,复选框
的OnChange
事件不会被调度!cb.已选中
-i、 e.cb_onChange
侦听器仅在用户手动单击复选框时执行
当我更改代码中的状态时,OnChange
事件为什么没有被触发?这是javascript中输入元素上的事件的工作方式
如果希望执行回调,则需要手动触发复选框上的更改事件
这方面有一些问题:
当浏览器在复选框中标识更改事件时,它会将选中属性设置为!选中并调用订阅的函数,您可以假定这些函数发生在一个函数(f1)中,并且在事件发生时调用这些函数。在这种情况下,您不是在调用函数f1,而是在设置属性 这回答了你的问题吗?
var count = 0;
var cb = document.getElementById("cb");
var btn = document.getElementById("btn");
var msg = document.getElementById("msg");
cb.addEventListener("change", cb_onChange);
btn.addEventListener("click", btn_onClick);
// Change the state of the Checkbox when user clicks the Button
function btn_onClick() {
cb.checked = !cb.checked;
}
// The state of the Checkbox has changed, so increment the change count and display it
function cb_onChange() {
msg.innerHTML = "Checkbox changed " + count+++" times";
}