在asp.net页面自动生成的JS代码中看到了这样的代码:if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) { 
            theform = document.forms["Form1"]; 
        } 
        else { 
            theform = document.Form1; 
        }
从代码来看,应该是判断如果是网景浏览器,就执行theform = document.forms["Form1"]; 否则就执行else中的内容。
应该是为了解决浏览器差异而写的,但是我做了测试:
 
 写一个JS方法
 function doTest()
    {
       alert(document.forms["form1"]);
       alert(document.form1);
    }
 再用一个按钮来调用它
<input id="ButtonTest" type="button" value="DifferentTest"  onclick="doTest()"/>在IE中执行这个测试,谈出了两次Object,也就是说两种方式都能获取到form1,那么为什么在asp.net中还要自动生成判断是否为网景浏览器的代码呢?恳请指点!

解决方案 »

  1.   

    多弄点不同的浏览器试试doTest
      

  2.   

    也就是说所有浏览器都是支持document.forms["form1"]这样的写法的。但是微软还要加上一个判断,难道是document.form1这样的取值方式比document.forms["form1"]效率要高?网景只支持document.forms["form1"]这样的写法,所以对非网景的浏览器就采用document.form1这样的取值方式?
    但我觉得document.forms["form1"]是从直接指定从所有的forms数组里面找form1,而document.form1是从全部的document中来找,应该效率更低才对啊?继续求解中
      

  3.   

    document.forms["form1"],document.form1
    好象没什么不同吧,好象效率也一样吧.
      

  4.   

    document.form1遍历一次
    document.forms["form1"]遍历两次
      

  5.   

    document.form1遍历一次
    document.forms["form1"]遍历两次
    深一步理解,想想在新华字典中查“仁”这个字:
    从整本字典中找“仁”(遍历一次)
    从索引中先找单人旁(相当于数组),再找“仁”这个字(遍历两次)
    可是遍历两次却比遍历一次要快!但是这种情况是针对在很多内容中进行归类查找时而用
    而本问题是针对当前页面而言,一个单页面的元素内容并不会很多,相当于一个作坊中直接找某某负责人会很快,而不需要像酒店那样分门别类的从管理名单中去找,直接找会更快!
    今天是春节结贴,回答的人每人有分,祝大家新年快乐!也祝自己今年Find一个好工作!