<html> 
<head> 
<script language="JavaScript"> 
<!--
var t = false;
function on() 
{
t = !t;
document.form1.radioqq.checked = t;

//--> 
</script>
</head> 
<body> 
<form name="form1">
<input type="radio" name="radioqq" onclick="on()" >变换 
   </form> 
</body> 
</html>

解决方案 »

  1.   

    应该在mousedown里操作,如果放到click里,则因为已经手动选过一次,然后代码会把结果再还原回去的。
    <html> 
    <head> 
    <script language="JavaScript"> 
    <!-- 
    function on() 

    document.form1.radioqq.checked=!document.form1.radioqq.checked
    } //--> 
    </script> 
    </head> 
    <body> 
    <form name="form1"> 
    <input type="radio" name="radioqq" onmousedown="on();" >变换    </form> 
    </body> 
    </html>
      

  2.   

    同意一楼
    不过为什么不直接用checkbox?这样不是更常规一些,用户也好理解。<html>
    <head>
    <script language="JavaScript">
    <!--
    function on(sender)
    {
    sender.defaultChecked = !sender.defaultChecked; // 可以省个全局变量
    sender.checked = sender.defaultChecked;
    }
    //-->
    </script>
    </head>
    <body>
    <form name="form1">
    <input type="radio" name="radioqq" onclick="on(this)" >变换
    </form>
    </body>
    </html>
      

  3.   


    <html> 
    <head> 
    </head> 
    <body> 
    <form name="form1"> 
    <input type="radio" name="radioqq" onClick="JavaScript:this.checked=!this.checked;" >变换    </form> 
    </body> 
    </html>
      

  4.   

    4楼明显没动手测试过onclick事件触发的时候checked都是true // 因为鼠标按下就改变了checked的值只有在onmousedown事件才能判断<input type="radio" name="radioqq" onmousedown="this.defaultChecked = this.checked;" onclick="this.checked = !this.defaultChecked">楼主失踪了。
      

  5.   

    to zswang为什么只写在onmousedown添加"this.checked=!this.checked"就不能实现呢?
      

  6.   

    单击事件的顺序是down ,up ,click ,在down和up里不自动改变checked的值,click里自动改变值
    因为是radio默认单击事件里checked都是true.所以直接取反不行.
    当radio没被选中的时候单击后为true直接取反的结果又是false
    当radio被选中的时候第一次取反为false,单击后为true取反又是false
    可以用以下代码查看:
    <html> 
    <head> 
    <script language="JavaScript"> 
    <!-- 
    str="test"
    setInterval(function(){if(str!="")clicktest.innerHTML+=str+"<br>";str=''},1000)
    //--> 
    </script> 
    </head> 
    <body> 
    <form name="form1"> 
    <input type="radio" name="radioqq" checked="checked" onmousedown='str+="onmousedown"+this.checked' onclick='str+="1onclick"+this.checked;event.returnValue=false' onmouseup="this.checked=!this.checked;str+='onmouseup'+this.checked" >变换 
    </form> 
    <div id=clicktest></div>
    </body> 
    </html>