<textarea id=test></textarea>
<textarea id=test></textarea>
<script>
for(i=0;i<document.all.test.length;i++)
  document.all.test[i].value="freefalcon";
</script>

解决方案 »

  1.   

    呵呵心血来潮给document添了个方法:function document.getElementsById(id){
    var r=document.all[id];
    if(r.length==null) r=[r];
    var result = new Array();
    for (var i=0;i<r.length;i++)
    if (r[i].id==id)
    result[result.length]=r[i];
    return result;
    }剩下的就不说了吧?
      

  2.   

    不用心血来潮,本来就有,呵呵<textarea id=test></textarea>
    <textarea id=test></textarea>
    <script>
    var o=document.getElementsByName("test")
    for(i=0;i<o.length;i++)o[i].value="freefalcon";
    </script>
      

  3.   

    什么世道,连秋水也来蒙我?<textarea id=test></textarea>
    <textarea name=test></textarea>
    <script>
    var o=document.getElementsByName("test")
    for(i=0;i<o.length;i++)o[i].value="freefalcon";
    </script>
      

  4.   

    >>什么世道,连秋水也来蒙我?老兄,这不是在蒙你呀,DHTML中document对象本来就有“getElementById”和“getElementsByName”方法。
      

  5.   

    document.getElementsByTagName();还有这个方法。不过还是喜欢用all集合。
      

  6.   

    呜~~那么多人想蒙我to:ChinaPcFan(电脑爱好者) 
    ------------------------------------------------
    getElementById 返回的是相同ID的第一个对象
    getElementsByName 返回的是相同名字或者ID的对象的集合
    我写的getElementsById 是为了返回相同ID对象的集合,名字相同的不算。
    你看我前面帖的代码,getElementsByName把<textarea id=test></textarea>和<textarea name=test></textarea>等同处理了,要是用我的函数就会忽略后面那个。
    -------------------------------------------------runmin(*^_^*) :
    也就是 document.all.tags() 呵呵,反正都一样。不过all()和getElementsByName()在同名的元素只有一个的时候的返回有差别:前者返回元素,后者返回只有一个元素的集合。
      

  7.   

    想法不错,但你写的方法怎么那么多错误呀,我修改了一下 :-)
    <input type="text" id=txt>
    <input type="text" id=txt>
    <input type="text" id=txt><input type="button" value=check onclick=check()>
    <script>
    function document.getElementsById(sId){
    var objects=document.all[sId];
    var collObjects = new Array();
    if(objects==null)return collObjects;
    if(objects.length==undefined){
    collObjects[0]=objects;
    return collObjects;
    }
    for (var i=0;i<objects.length;i++)
    collObjects[i]=objects[i];
    return collObjects;
    }
    function check(){
      var texts=document.getElementsById("txt");
      for(i=0;i<texts.length;i++)
       alert(texts[i].value);
    }
    </script>
      

  8.   

    哎,其实最后的复制都是多余的
    <script>
    function document.getElementsById(sId){
    var objects=document.all[sId];
    var collObjects = new Array();
    if(objects==null)return collObjects;
    if(objects.length==undefined){
    collObjects[0]=objects;
    return collObjects;
    }
    return objects;
    }
      

  9.   

    <textarea id=test></textarea>
    <textarea name=test></textarea>
    <script>
    var o=document.getElementsByName("test")
    for(i=0;i<o.length;i++)if(o[i].id=="test")o[i].value="freefalcon";
    </script>
      

  10.   

    freefalcon(心宇):
    我的哪里错了?你的倒是有点问题:
    undefined在IE5下面不是常量,应该用null比较好。
    此外你的函数没能区分name和id啊:<BODY>
    <input type="text" id=txt>
    <input type="text" name=txt>
    <input type="text" id=txt><input type="button" value=check onclick=check()>
    <script>
    function document.getElementsById(sId){
    var objects=document.all[sId];
    var collObjects = new Array();
    if(objects==null)return collObjects;
    if(objects.length==null){
    collObjects[0]=objects;
    return collObjects;
    }
    for (var i=0;i<objects.length;i++)
    collObjects[i]=objects[i];
    return collObjects;
    }
    function check(){
      var texts=document.getElementsById("txt");
      for(i=0;i<texts.length;i++)
       alert(texts[i].value);
    }
    </script></BODY>第2个input没有指定id的,你的函数还是把它逮出来了。后面那个不复制的有一样的问题,我之所以要复制就是为了判断id是否符合的嘛,你还把它去掉?
      

  11.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1210925
      

  12.   

    ft,太郁闷了,getElementsByName()居然获得的不只是具有相同的name的对象集合,还包括id!!!这也太名不副实了吧!  谢谢秋水!
    to emu(ston):不好意思,谢谢提醒。主要是我对document.all[]返回的对象不是很清楚,:-),不过你的if(r.length==null)还是有问题,你可以试一个不存在的id,看有没有问题,反正在我这儿会报错。
    好了,有了秋水的提示,我们俩的笨办法都不需要了,如下:
    <BODY>
    <input type="text" id=txt value=1>
    <input type="text" name=txt value=2>
    <input type="text" id=txt value=3>
    <input type="button" value=check onclick=check()><script>
    function document.getElementsById(sId){
    var objects=document.getElementsByName(sId);
    var collObjects = new Array();
    for (var i=0;i<objects.length;i++)
         if(objects[i].id==sId)
                        collObjects[collObjects.length]=objects[i];
    return collObjects;
    }
    function check(){
      var texts=document.getElementsById("txt");
      for(i=0;i<texts.length;i++)
       alert(texts[i].value);
    }
    </script>
    </BODY>
      

  13.   

    对不存在的id,应该在上一句if(objects==null)return collObjects;就返回了,不应该到下面来出错啊。你写的函数和我最先帖的那个有差别吗??
      

  14.   

    我是说你的r.length==null不行,应该先判断一下,我的if(objects==null)return collObjects;就是为了解决这个问题的
    我最后写的这个和你最先写的是有区别的,正如你所说:
    document.all[]和getElementsByName()在同名的元素只有一个的时候的返回有差别:前者返回元素,后者返回只有一个元素的集合
    而且在id不存在的时候,前者返回的值是null,后者是一个空的集合