Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript更改输入[复选框或单选按钮]时如何获取(或触发)更改事件_Javascript_Html_Events_Onchange - Fatal编程技术网

使用javascript更改输入[复选框或单选按钮]时如何获取(或触发)更改事件

使用javascript更改输入[复选框或单选按钮]时如何获取(或触发)更改事件,javascript,html,events,onchange,Javascript,Html,Events,Onchange,我有如下设置,当我通过单击标签或复选框本身选中/取消选中复选框时,会触发更改事件 但当我尝试使用javascript(比如通过点击按钮)选中/取消选中复选框时,复选框将选中或取消选中,但更改事件不会触发 请检查下面的代码 var checkbox=document.getElementById(“check”); checkbox.addEventListener(“更改”,function(){window.alert(“更改事件”)}) document.getElementsByTagN

我有如下设置,当我通过单击标签或复选框本身选中/取消选中复选框时,会触发更改事件

但当我尝试使用javascript(比如通过点击按钮)选中/取消选中复选框时,复选框将选中或取消选中,但更改事件不会触发

请检查下面的代码

var checkbox=document.getElementById(“check”);
checkbox.addEventListener(“更改”,function(){window.alert(“更改事件”)})
document.getElementsByTagName(“按钮”)[0]。addEventListener(“单击”,函数(){
checkbox.checked?checkbox.checked=false:checkbox.checked=true;
})
这是标签

切换复选框
为什么会出现这种情况?只需使用
复选框。单击()就这么简单。它将在触发
change
事件的同时切换选中/取消选中

var checkbox=document.getElementById(“check”);
checkbox.addEventListener(“更改”,函数(){
窗口警报(“更改事件”)
})
document.getElementsByTagName(“按钮”)[0]。addEventListener(“单击”,函数(){
复选框。单击();
})
这是标签

切换复选框
好的,您可以将您的逻辑分离到另一个函数中,然后在复选框的“更改”和按钮的“单击”上触发该函数

var checkbox = document.getElementById("check");

checkbox.addEventListener("change", function() {
  yourFunction()
});

document.getElementsByTagName("button")[0].addEventListener("click", function() {
  checkbox.checked ? checkbox.checked = false : checkbox.checked = true;
  yourFunction()
});

function yourFunction() {
  window.alert("change event")
}

这不能解决你的问题吗?不过,我相信这更符合您的初衷。

是的,这很好。但为什么使用复选框更改时不触发更改事件。checked=true@KaleemNalband为其创建一个JSFIDLE并链接here@KaleemNalband你没有使用我上面的代码。看到这个了吗works@AnkitAgrawal您的代码运行良好。但是为什么更改事件不由我的代码触发,我的代码也会更改复选框的状态呢?让我们来看看。