用IE6运行以下代码,运行后步骤:
1、将复选框的勾去掉
2、点“提交”按钮
3、点IE6上的“后退”
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<meta content="history" name="save">
<style>
.saveHistory {behavior:url(#default#savehistory);}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="sss">
<div id="a">选中</div>
<div id="b">未选中</div><input class="saveHistory" type="checkbox" name="chk" value="1" onClick="if(checked){document.getElementById('a').style.display='';document.getElementById('b').style.display='none';}else{document.getElementById('a').style.display='none';document.getElementById('b').style.display='';}" checked="checked" /><script language="javascript">
if(document.getElementsByName("chk")[0].checked==true)
{
document.getElementById('a').style.display='';
document.getElementById('b').style.display='none';
}
else
{
document.getElementById('a').style.display='none';
document.getElementById('b').style.display='';
}
</script><input type="submit" name="Submit" value="提交" /></form>
</body>
</html>
然后就可以看到这个牛头不对马嘴的诡异现象,复选框明明没有勾选,文字状态却是“选中”。虽然后退以后,复选框看上去是“未选中”,但IE6下checked的值却是“true”,诡异,十分诡异。
(也就是说IE6下看上去是“未选中”但实际上是“选中”的)而FF,Opera、谷歌等其他浏览器的值是“false”,IE7没有试。特请教各位达人,这是怎么回事?有什么解决办法?
1、将复选框的勾去掉
2、点“提交”按钮
3、点IE6上的“后退”
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<meta content="history" name="save">
<style>
.saveHistory {behavior:url(#default#savehistory);}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="sss">
<div id="a">选中</div>
<div id="b">未选中</div><input class="saveHistory" type="checkbox" name="chk" value="1" onClick="if(checked){document.getElementById('a').style.display='';document.getElementById('b').style.display='none';}else{document.getElementById('a').style.display='none';document.getElementById('b').style.display='';}" checked="checked" /><script language="javascript">
if(document.getElementsByName("chk")[0].checked==true)
{
document.getElementById('a').style.display='';
document.getElementById('b').style.display='none';
}
else
{
document.getElementById('a').style.display='none';
document.getElementById('b').style.display='';
}
</script><input type="submit" name="Submit" value="提交" /></form>
</body>
</html>
然后就可以看到这个牛头不对马嘴的诡异现象,复选框明明没有勾选,文字状态却是“选中”。虽然后退以后,复选框看上去是“未选中”,但IE6下checked的值却是“true”,诡异,十分诡异。
(也就是说IE6下看上去是“未选中”但实际上是“选中”的)而FF,Opera、谷歌等其他浏览器的值是“false”,IE7没有试。特请教各位达人,这是怎么回事?有什么解决办法?
在js中可以这样设置document.getElementsByName("chk")[0].checked = true;//选中
<div id="a">选中</div>
<div id="b">未选中</div><input class="saveHistory" type="checkbox" name="chk" value="1" onClick="if(checked){document.getElementById('a').style.display='';document.getElementById('b').style.display='none';}else{document.getElementById('a').style.display='none';document.getElementById('b').style.display='';}" checked="checked" /><script language="javascript">
if(document.getElementsByName("chk")[0].checked==true)
{
document.getElementById('a').style.display='';
document.getElementById('b').style.display='none';
}
else
{
document.getElementById('a').style.display='none';
document.getElementById('b').style.display='';
}
</script><input type="submit" name="Submit" value="提交" /></form>
http://topic.csdn.net/u/20100107/10/2d019f0b-bd6a-4c83-aab0-6ed9856f3777.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<meta content="history" name="save">
<style>
.saveHistory {behavior:url(#default#savehistory);}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="sss">
<div id="a">选中</div>
<div id="b">未选中</div>
<input class="saveHistory" type="checkbox" name="chk" value="1" onClick="if(checked){document.getElementById('a').style.display='';document.getElementById('b').style.display='none';}else{document.getElementById('a').style.display='none';document.getElementById('b').style.display='';}" checked="checked" />
<script language="javascript">if(document.getElementsByName("chk")[0].checked==true)
{
document.getElementById('a').style.display='';
document.getElementById('b').style.display='none';
}
else
{
document.getElementById('a').style.display='none';
document.getElementById('b').style.display='';
}
alert(document.getElementsByName("chk")[0].checked);
</script>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
我感觉是这样的:
在单击事件发生时,若单击以前未被选中,单击后就被选中了,这时checked=true;这样执行是正确的。若是取消选中时,在判断过后执行else{},但是在else最后checked又被置为TRUE。这里应该是出现问题。
不同浏览器的执行时不同的……
一楼的是正确的……checked="checked"去掉