我在body上加了一个按钮察看innerHTML,发现原来的两个radio的name也被改编了。统统变成了radio1

解决方案 »

  1.   

    我很菜,瞎说一句:
    我怀疑对象的层次关系有误,修改名字并没有成功。
    看帮助,没看明白。
    var baseNode = table1.childNodes[0];//得到的是第一行吗?
    cloneNode.children[0].children[0].children[0].name
             那位大虾能解释一下层次关系?
      

  2.   

    我尝试过添加行后再给radio标签赋予name,
    虽然alert出来的name值是正确的,
    但是当点击radio时,还是发现它们之间相互影响,
    而并不像想象中的那样分组
      

  3.   

    我也尝试了先append再改名字,不过alert出来的东西不算数的,我察看body的innerHTML,发现根本名字就没有改过,对象的层次也没有问题(尽管我不知道原理),我先吧一个radio置为checked,确保引用式正确的,然后再改名字,仍然alert显示改编,而innerHTML显示没改。
    楼主能不能先教教我,
    (1)cloneNode:
    (2)cloneNode.children[0]:
    (3)cloneNode.children[0].children[1].
    (4)cloneNode.children[0].children[1].children[0]
    以上四个表达式是什么东西呀?我会另开贴子相谢,也欢迎其他大虾指点。
      

  4.   

    我用的不是clone的方法(这个对IE要求较高),
    而是直接复制html,
    然后通过设置name属性来改变,
    我用alert看到name是正常的(是自己想要的),
    但是去操作radio的时候又像没改变一样。
      

  5.   

    clone就相当于复制啊,
    你可以去查一下MSDN,
    或者在google搜索 dhtml cloneNode 找到微软网站上相应的帮组也行。
      

  6.   

    大概也就是由外到内的关系,
    比如如果当前对象为table的话,那么其children便是tr了。。
      

  7.   

    cloneNode.children[0].children[1].children[0].
    如果说cloneNode是行的画,怎么会有这么多的层次,
    行之后不就是单元格勒吗?
    cloneNode.children[0]:它是什么?
      

  8.   

    赫赫,我正在给各级对象加id,然后alert,看看究竟是什么玩艺。
    呼唤大虾!!!
      

  9.   

    childNode的结实。
    Retrieves a collection of HTML Elements and TextNode objects that are direct descendants of the specified objectbaseNode.children[0](.id)才代表行(我能得到行的id).
      

  10.   

    我现在有些懂了,
    我关于alert与innerHTML的纯属谬论,那名字究竟改了没有,我右不知道了。
      

  11.   

    关于name的问题比较讨厌,前台看起来没变,但是后台却变了!
    应次不推荐用脚本改name,你是clone的,试试看create
      

  12.   

    你若是用组织HTML的方法产生的控件的name是无效的, 若要产生有效name的控件:
    var mm = document.createElement("<input type=radio name=abc>");
    用这种方式产生的控件name才是有效的.
      

  13.   

    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <p>
    <input type="button" onclick="addrow()" value="ADD ROW">
    </p>
    <table id="table1">
    <tr>
    <td><input type="radio" name="radio1">Yes</td><td><input type="radio" name="radio1">No</td>
    </tr>
    </table></BODY>
    </HTML>
    <script>
    var i = 1;
    function addrow(){
    var baseNode = table1.childNodes[0];
    var cloneNode = baseNode.cloneNode(true);
    i++;
    //输出修改前的名字
    alert("Before change name1 : " + cloneNode.children[0].children[0].children[0].name)
    alert("Before change name2 : " + cloneNode.children[0].children[1].children[0].name)
    cloneNode.children[0].children[0].children[0].outerHTML="<input name='radio"+i+"' aaaaaaa="+cloneNode.children[0].children[0].children[0].outerHTML;
    cloneNode.children[0].children[1].children[0].outerHTML="<input name='radio"+i+"' aaaaaaa="+cloneNode.children[0].children[1].children[0].outerHTML;
    //输出修改后的名字
    alert("After change name1 : " + cloneNode.children[0].children[0].children[0].name)
    alert("After change name2 : " + cloneNode.children[0].children[1].children[0].name)table1.appendChild(cloneNode);
    }
    </script>
      

  14.   

    看来还是要通过写入html来改变名称了。
    唉,后来我也是被迫用这种方法的。
    通过查找name,然后替换字符串