Javascript Internet Explorer没有';t执行onChange函数
我有这段代码,它应该通过使用控件onChange事件选中和取消选中表单复选框来隐藏和显示DIV。它可以在Chrome、Firefox、Safari和Opera中使用,但IE8和IE9拒绝合作。。。控制台中没有错误消息。我遗漏了什么 谢谢你的帮助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
<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因为这不是我的代码。:-)我只是想适应它,面临着改变的问题。但我会在最终版本中这样做。