Javascript Internet Explorer没有';t执行onChange函数

Javascript Internet Explorer没有';t执行onChange函数,javascript,internet-explorer,Javascript,Internet Explorer,我有这段代码,它应该通过使用控件onChange事件选中和取消选中表单复选框来隐藏和显示DIV。它可以在Chrome、Firefox、Safari和Opera中使用,但IE8和IE9拒绝合作。。。控制台中没有错误消息。我遗漏了什么 谢谢你的帮助 <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title>Demo</title

我有这段代码,它应该通过使用控件onChange事件选中和取消选中表单复选框来隐藏和显示DIV。它可以在Chrome、Firefox、Safari和Opera中使用,但IE8和IE9拒绝合作。。。控制台中没有错误消息。我遗漏了什么

谢谢你的帮助

<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Demo</title>
<script type="text/javascript">
var divVisible = true;
function Passport() {
   if (divVisible) {
      document.getElementById('mydiv').style.visibility="hidden";
      divVisible = false;
   }
   else {
      document.getElementById('mydiv').style.visibility="visible";
      divVisible = true;
   }
}
</script>
</head>
<body>
   <form>
      <input type="checkbox" onchange="Passport();" value="Passport">Passport
   </form>
   <div style="height: 100px; width: 100px; background-color: #ff0;" id="mydiv"></div>
</body>
</html>

演示
var-divVisible=true;
函数Passport(){
如果(可见){
document.getElementById('mydiv').style.visibility=“hidden”;
divVisible=false;
}
否则{
document.getElementById('mydiv').style.visibility=“visible”;
divVisible=true;
}
}
护照

将onchange更改为onclick,因为当焦点丢失时IE8触发onchange

并根据复选框的状态进行调整

<input type="checkbox" onchange="Passport(this.checked);" id="passportCB" value="Passport"><label for="passportCB">Passport</label>

我还添加了一个标签,因此用户可以单击文本并切换复选框状态。

将onchange更改为onclick,因为IE8在焦点丢失时触发onchange

并根据复选框的状态进行调整

<input type="checkbox" onchange="Passport(this.checked);" id="passportCB" value="Passport"><label for="passportCB">Passport</label>

我还添加了一个标签,因此用户可以单击文本并切换复选框状态。

在焦点丢失之前,复选框输入不会触发任何更改事件。每次单击时,输入值都会更改


更改
onchange=“Passport();”
对于
onclick=“Passport();”

在焦点丢失之前,复选框输入不会触发任何更改事件。每次单击时,输入值都会更改

根据以下内容更改
onchange=“Passport();”
onclick=“Passport();”

IE中的
onchange
仅在复选框失去焦点时激发。所以,如果你点击它,点击空格几次,点击出来,你只会得到一个
onchange
事件,但会得到几个
onclick
事件

您应该更改代码以改用onclick事件:

<input type="checkbox" onclick="Passport();" value="Passport">Passport</input>
护照
根据此

IE中的
onchange
仅在复选框失去焦点时激发。所以,如果你点击它,点击空格几次,点击出来,你只会得到一个
onchange
事件,但会得到几个
onclick
事件

您应该更改代码以改用onclick事件:

<input type="checkbox" onclick="Passport();" value="Passport">Passport</input>
护照

不内联绑定事件处理程序(作为
属性)。使用
onchange
属性或
addEventListener
/
attachEvent
方法。我不会向你解释的。网络上有很多关于它们的信息。你是否让复选框失去了焦点?请参阅:您为什么不使用
。checked
来确定是否应将其显示为隐藏?我不知道这样一个事实:要使更改有效,必须将焦点放在其中。谢谢您的帮助。@epascarello因为这不是我的代码。:-)我只是想适应它,面临着改变的问题。但对于最终版本,我将这样做。不要内联绑定事件处理程序(作为
属性)。使用
onchange
属性或
addEventListener
/
attachEvent
方法。我不会向你解释的。网络上有很多关于它们的信息。你是否让复选框失去了焦点?请参阅:您为什么不使用
。checked
来确定是否应将其显示为隐藏?我不知道这样一个事实:要使更改有效,必须将焦点放在其中。谢谢您的帮助。@epascarello因为这不是我的代码。:-)我只是想适应它,面临着改变的问题。但我会在最终版本中这样做。