document.all("oSelect")) 不是兼容的写法,返回的是oSelect这个对象document.getElementsByTagName("oSelect")是DOM的标准写法,返回的是所有标签为oSelect的对象集合

解决方案 »

  1.   

    楼主和楼上的是否搞错了
    应该是document.all(...)和document.getElementsByName(...)比较document.getElementsByTagName(...)应该和document.all.tags(...)作比较
      

  2.   

    <xxx id="xxx" /> => document.getElementById // 这种情况适用于页面中id为xxx的只有一个元素<xxx name="xxx" />
    <xxx name="xxx" />
    <xxx name="xxx" />
    <xxx name="xxx" /> => document.getElementsByName // 这个函数可以返回一个数组,在radio button这样情况下用的较多document.all // 这个是IE支持的,既支持id又支持name,灵活性较好,是MS提供,但在netscape和firefox中都无法使用,因为它不是DOM的标准函数
      

  3.   

    用all(...)有一点很郁闷:
    当只有一个元素时返回一个对象
    当多个元素时返回一个对象数组虽然兼容有问题
    但是任意html对象都支持,这个比较方便
    getElementsByName,getElementById只对document有效
    意外的是:getElementsByTagName竟然也支持全部对象总结:不知道别人怎么想的,个人觉得:“郁闷”“残念”
      

  4.   

    楼上说得好.
    另外FF浏览器也是支持document.all的,所以兼容问题其实不大.
    至于W3C标准,大可不必理会,没有一款浏览器完全按W3C标准制作的.在iframe的问题上,getElementById和document.all是不一样的.不信楼主可以试下,document.all[iframeID]和document.getElementById(iframeID)的区别.
    如果要用getElementById取iframe里的内容,就要用document.getElementById(iframeID).contentWindow,不过这个IE5不支持.getElementById和getElementsByName是不同的.前者只能document.getElementById,后者是支持对象的,可以obj.getElementsByName("DIV"),这样写只有obj和obj的子结点中的div才会被找到。