posts - 15,  comments - 8,  trackbacks - 0

          在寫了很多js后,會(huì)發(fā)現(xiàn)在js中總會(huì)出現(xiàn)各種各樣奇怪的問(wèn)題,主要的問(wèn)題是不能獲得所需要的對(duì)象.
          一般來(lái)說(shuō),我們所需要獲得的對(duì)象有幾種辦法獲得:
          1. ID 法,通過(guò)使用document.getElementById()這個(gè)方法獲得用戶所需的對(duì)象,你只需要在標(biāo)簽中加入id="yourIdName"這樣的屬性,你就可以用這個(gè)方法獲得這個(gè)對(duì)象了.舉個(gè)例子來(lái)說(shuō):有如下代碼
          <table><tr id='zergTr'><td>這里是zergpest的第一行</td></tr></table>
          那么我們要獲得這個(gè)tr,并且設(shè)置這個(gè)tr為不可見,應(yīng)該這樣做.請(qǐng)看如下代碼:
          <script type="text/javascript">
                var zergpest = document.getElementById("zergTr");
                zergpest.style.display = "none";
          </script>
          這樣就可以通過(guò)使用document.getElementById() 這個(gè)方法來(lái)獲得改對(duì)象,并且設(shè)置該對(duì)象為不可見.
          但是,如果我們需要設(shè)置多個(gè)具有同樣ID的對(duì)象不可見的時(shí)候,這個(gè)方法就不能用了,因?yàn)闊o(wú)論你怎么為后面的<tr>標(biāo)簽添加id屬性,用document.getElementById()這個(gè)方法獲得的只能是第一個(gè)具有該ID的對(duì)象,其實(shí)其他的ID這時(shí)候應(yīng)該是屬于偽Id了.你所要操作的只能操作到第一個(gè)具有該ID的對(duì)象,而不是具有所有你所設(shè)置的具有該ID的對(duì)象.那么這時(shí)候我們?cè)撛趺崔k呢,請(qǐng)看第2種方法.
          2.Name法,通過(guò)使用document.getElementsByName()這個(gè)方法獲得用戶所需的對(duì)象,你需要做的是在標(biāo)簽中加入name="yourname"這樣的屬性,道理上說(shuō)你就可以使用該方法獲得該對(duì)象了.然而,有些時(shí)候確不是這樣的,document.getElementsByName()這個(gè)方法其實(shí)主要是針對(duì)form標(biāo)簽中的對(duì)象有用,在form標(biāo)簽以外的對(duì)象就不一定有用了,這里說(shuō)的不一定,是說(shuō)有時(shí)候有用,有時(shí)候沒有用.不過(guò)也可能和我用的IE7 beta3 有關(guān),沒有深入研究過(guò).舉個(gè)例子了說(shuō),有如下代碼.
          <table><tr name='zergTr'><td>這里是zergpest的第一行</td></tr></table>
          <table><tr name='zergTr'><td>這里是zergpest的第二行</td></tr></table>
          我們這里有二個(gè)相同的name,因?yàn)檫@個(gè)方法是獲取具有多個(gè)name的,如果只有一個(gè)name的話,那么建議你用ID法來(lái)獲取,而不要用這種,不然的話你需要進(jìn)行判斷l(xiāng)ength值.
          我們可以用如下代碼來(lái)獲取該對(duì)象,并且設(shè)置該對(duì)象為不可見,代碼如下:
          <script type="text/javascript">
              var zergpest = document.getElementsByName("zergTr");
              if (!zergpest.length)
              {
                    zergpest.style.display = "none";
               }
               else
              {
                    for (var i=0;i<zergpest.length;i++)
                    {
                         zergpest[i].style.display = "none";
                    }
               }
          </script>
          這樣,道理上我們應(yīng)該可以設(shè)置所有name值為zergTr的對(duì)象為不可見了,可是事實(shí)往往并不能如你所希望的,如果我們?cè)?lt;tr>前面加個(gè)<form>標(biāo)簽,那么結(jié)果就可以得到你所需要的結(jié)果了,但沒有form標(biāo)簽的話,結(jié)果是有時(shí)候可以正確,有時(shí)候不正確,甚至不能獲得對(duì)象.這時(shí)候,我們用第3種方法來(lái)解決,這就是軒轅的JS對(duì)象大招了.
          3.超級(jí)Name大法,通過(guò)使用document.documentElement.getElementsByTagName()這個(gè)方法結(jié)合name法來(lái)獲得這些你所需要的對(duì)象.還是用剛才的例子.如下:
          <table><tr name='zergTr'><td>這里是zergpest的第一行</td></tr></table>
          <table><tr name='zergTr'><td>這里是zergpest的第二行</td></tr></table>
          這里我們需要設(shè)置該<tr>標(biāo)簽為不可見,而也不希望加上看著很不愉快的<form>標(biāo)簽,這時(shí)我們就需要用如下代碼:
          <script type="text/javascript">
              var zergpest = document.documentElement.getElementsByTagName("tr");
              if (!zergpest.length)
              {
                  zergpest.style.display == "none";
              }
              else
              {
                  var realZerg = [];
                  for (var i=0;i<zergpest.length;i++)
                  {
                       if (zergpest[i].name == "zergTr")
                      {
                          realZerg.push(zergpest[i]);
                      }
                  }
                  if (realZerg.length)
                  {
                      for (var j=0;j<realZerg.length;j++)
                      {
                          realZerg[j].style.display = "none";
                      }
                  }
              }
          </script>
          這樣就可以把所有name值等于yourname這樣的多個(gè)對(duì)象設(shè)置為不可見了,這就是軒轅的超級(jí)Name大法,:),不要覺得用了2個(gè)for會(huì)犧牲性能,占用用戶的cpu,其實(shí)現(xiàn)在用戶的cpu最少都是1.5GHz以上,這點(diǎn)小運(yùn)算對(duì)CPU來(lái)說(shuō)根本就是駱駝身上的一個(gè)細(xì)胞,而且用戶的cpu閑著也是閑著,既然對(duì)他供著電,那就讓他做點(diǎn)事情吧.:)這3種方法各有好處,按照不同的需要可以選擇不同的方法.終究會(huì)達(dá)到j(luò)s所需要的目的.


          原文地址:http://zergpest.spaces.live.com/blog/cns!2C6F0CD52F9AC08D!1480.entry?_c=BlogPart
          posted on 2008-04-20 22:27 lvq810 閱讀(4953) 評(píng)論(1)  編輯  收藏 所屬分類: Html/JavaScript/Ajax
          主站蜘蛛池模板: 祁阳县| 台南县| 浑源县| 高陵县| 宿松县| 通州区| 志丹县| 乐业县| 神农架林区| 兴城市| 营山县| 微博| 五华县| 酉阳| 墨江| 同德县| 太谷县| 玉山县| 韶山市| 瑞安市| 吴江市| 句容市| 彩票| 遵化市| 黔东| 丰顺县| 三门县| 宜春市| 南和县| 甘孜县| 巨野县| 手机| 咸宁市| 蒲城县| 德兴市| 耒阳市| 铜梁县| 印江| 阜城县| 平和县| 衡东县|