用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.   

    把checked="checked"  去掉就不会默认的选中了
    在js中可以这样设置document.getElementsByName("chk")[0].checked = true;//选中
      

  2.   

    如果用document.getElementsByName("chk")[0].checked = true;//选中那么提交时无论是“选中”还是“未选中”,后退时都会是“选中”
      

  3.   

    把你的网页多余的内容都去掉,像这样测试:<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>
      

  4.   

    可以参考:
    http://topic.csdn.net/u/20100107/10/2d019f0b-bd6a-4c83-aab0-6ed9856f3777.html
      

  5.   

    SORRY,我还是不明白。加一句测试代码:alert(document.getElementsByName("chk")[0].checked);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='';
    }
    alert(document.getElementsByName("chk")[0].checked);
    </script>
    <input type="submit" name="Submit" value="提交" />
    </form>
    </body>
    </html>
      

  6.   

    把你的html 这一句 删了:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      

  7.   

    <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" />
    我感觉是这样的:
    在单击事件发生时,若单击以前未被选中,单击后就被选中了,这时checked=true;这样执行是正确的。若是取消选中时,在判断过后执行else{},但是在else最后checked又被置为TRUE。这里应该是出现问题。
    不同浏览器的执行时不同的……
    一楼的是正确的……checked="checked"去掉
      

  8.   

    试过了,不行。就算只保留<form>内的内容也不行。