每招都有它自己的缺陷。写innerHTML虽然安全些,有时写起来也很烦琐,而且代码不清晰。

解决方案 »

  1.   

    比如我写的一个在两个select里面交换option的函数,要是用innerHTML写肯定没法子这么简洁:
    function exchangeOption(op1,op2)
    {
    if (op1.selectedIndex == -1) return;
    op2.appendChild(op1.removeChild(op1[op1.selectedIndex]));
    if (op1.length>0)op1.appendChild(op1.removeChild(op1.lastChild));
    }
    注:传给它的参数是两个select对象,起变量名的时候起乱了。
      

  2.   

    我的建议也是使用innerHTML,就是为了它的安全,麻烦点算啥!
      

  3.   

    innerHTML有漏洞隐患,不是对程序的,是对客户端的,呵呵
      

  4.   

    innerHTML的漏洞隐患有什么具体表现吗?
    你说的ie6的bug呢?
      

  5.   

    第4招有点补充:
    对select的上层节点cloneNode(true)也一样会克隆select,所以最好也避免。
      

  6.   

    谢谢flylyke(爱就像英雄莫问出处)的http://www.csdn.net/expert/topic/774/774887.xml?temp=.2941706flylyke接分
      

  7.   

    隐藏了的元素也要disabled,要不然用箭头键可以选中:<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title></title>
    </head>
    <body><input type=radio name=test onclick="alert(this.checked)" >
    <input type=radio name=test onclick="alert(this.checked)" style="display:none">
    <input type=radio name=test onclick="alert(this.checked)" >
    <input type=radio name=test onclick="alert(this.checked)" ></body>
    </html>