【发布时间】:2025-12-09 15:20:05
【问题描述】:
我对 JavaScript 如何处理 Change Events 感到困惑,正在寻找一些见解。
假设我们有两个 HTML 控件;一个复选框和一个按钮,我想使用 JS 显示一条消息,说明复选框从checked 更改为not-checked 的次数。
<input type="checkbox" id="cb" />
<button id="btn">Change Checkbox</button>
<div id="msg"></div>
JS 可能看起来像这样:
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";
}
在这里测试一下http://jsfiddle.net/26RWh/
请注意,当Checkbox 以编程方式设置为cb.checked = !cb.checked 时,不会调度Checkbox 的OnChange 事件。 - 即 cb_onChange 侦听器仅在/当用户手动单击复选框时才会执行。
为什么我在代码中更改状态时没有触发OnChange 事件?
【问题讨论】:
标签: javascript checkbox dom-events onchange