<script language="javascript">
function r_total(){
//修改name名称
document.getElementById("y1").name="y2";
alert(document.getElementById("y1").name);
}
function t(){
//获取name长度
alert(document.getElementById("y1").name);
var len=document.getElementsByName("y");
  alert(len.length);
}
</script><body>
<input type="text" name="y" id="y1" size="5" /><br />
<input type="text" name="y" id="y2" size="5" />
<br />
<input type="button" value="测试" onclick="r_total();" />
<input type="button" value="测试2" onclick="t();" />说明:第一个函数修改后id=“y1”的name后,第二个函数获取name的长度应该只有1个的,为什么提示出来还是2个呢,救急啊,朋友么
</body>

解决方案 »

  1.   

    楼主,你先点的是测试2按钮吧?如果点的是测试2按钮,提示当然是2啊,因为function r_total(),没有执行.如果执行了就不会了.
      

  2.   

    ie低版本有这个问题  ie8+正常了 重写下getElementsByName
    <!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=gb2312" />
    <title>无标题文档</title>
    <script language="javascript">
    document.getElementsByName=function(name){
    var eles=document.getElementsByTagName("*");
    var arr=[];
    for(var i=0,len=eles.length;i<len;i++){
    if(eles[i].getAttribute('name')==name){
    arr.push(eles[i]);
    }
    }
    return arr;
    }
    function r_total(){
    //修改name名称
    document.getElementById("y1").setAttribute('name',"y2");
    alert(document.getElementById("y1").name);
    }function t(){
    //获取name长度
    alert(document.getElementById("y1").name);
    var len=document.getElementsByName("y");
      alert(len.length);
    }
    </script><body>
    <input type="text" name="y" id="y1" size="5" /><br />
    <input type="text" name="y" id="y2" size="5" />
    <br />
    <input type="button" value="测试" onclick="r_total();" />
    <input type="button" value="测试2" onclick="t();" />说明:第一个函数修改后id=“y1”的name后,第二个函数获取name的长度应该只有1个的,为什么提示出来还是2个呢,救急啊,朋友么
    </body>
    </html>
    类似这样试试
      

  3.   

    正常情况下应该是1,ie8+、ff/google chrome都是正常的,确实如这位仁兄所说,按他的方法重写一下getElementsByName就好了
      

  4.   

    你好,我测试了一下你的代码的确正常,谢谢了。
    不过如果有多个不同的name则无法正常获取name属性长度了
      

  5.   

    getElementsByName的兼容性不怎么样,建议少用