JaveScript基礎 獲取元素的方式

通過ID獲取

  document.getElementById( '' ); 

→ 前綴必須是document

通過class獲取 (不兼容IE8及以下)

  .getElementsByClassName( '' );

因為class不是唯一性,獲取到的是個類數組(類似于數組,可以用下標,可以用length)
例:

  <div class='box'>1234</div>
   <div class='box'>
        <p>5474</p>
        <p>5474</p>
        <p>5474</p>
  </div>
  <div class='box'>987</div>

        var aBox = document.getElementsByClassName ( 'box' );
            alert( aBox[ 0 ].innerHTML );

aBox[ 0 ] 獲取得到的是類數組,所有要加位置才能找得到;

通過標簽名

      .getElementsByTagName( '' ); //獲取到也是類數組

      var aP = aBox[ 1 ].getElementsByTagName( 'p' );  
      alert( aP[ 1 ].innerHTML );

通過name獲取

  .getElementsByName( ' ' ); //獲取到也是類數組

一般用在表單里

通過選擇器 不兼容IE7及以下

  .querySelector( ' ' );  //直接得到的單個節點對象
  .querySelectorAll( '' ); //得到類數組

例:

  <div class='box' >
      <span>123</span>
  </div>

  var oBox = document.querySelector( '.box span' );
        alert( oBox.innerTHML );//彈出123

這個性能最差的,相比前面的最少慢10倍以上,盡量少用,只有在復雜度深的時候用

注意:ID獲取時,前綴必須是document
其他獲取時,前綴可以是某一個節點對象,表明不是從所有對象節點里找,而是指從該節點里找。
例:

   var aP = aBox[ 1 ].getElementsByTagName( 'p' );  
      alert( aP[ 1 ].innerHTML );

獲取元素的靜動態之分:

靜態方法:

獲取之后就指定某個對象或者節點了,跟節點的任何變化都沒有關系(例之前改變ID)
document.getElementById();
.querySelector();
.querySelectorAll()

動態方法:

獲取的變量(類數組),每用一次都會重新去原來的標簽重新去獲取一次;
.getElementByClassName()
.getElementByTagName() 一般不會去改標簽名,可以不用去考慮
.getElementByName()
例:

<div class="box"></div>
<script type="text/javascript">
    var aBox = document.getElementsByClassName( 'box' );
        aBox[0].className = 'box2';
        aBox[0].innerHTML = '11225';
</script>

第二個aBox[0]已沒辦法去獲取到aBox[0],上面已經把class改成box2,類數組是每用一次都會從原來的標簽再次獲取一次;

解決方法:

  var aBox = document.getElementsByClassName( 'box' );
  var x = aBox[0];
        x.className = 'box2';
        x.innerHTML = '11225';

→ 讓x指代某個節點,也就是aBox2已經存放在x里了,永遠指代原來的aBox2;


測試動態

<div class='box1' ></div>
<div id='box2' ></div>
var x = document.getElementsByClassName( 'box1' );
var oBox2 = document.getElementById( 'box2' );
     alert( x.length );====>彈出1;
     oBox2.innerHTML ='<p class='box1'></p>'
     alert( x.length );====>彈出2;

說明 getElementsByClassName( 'box1' ) 重新獲取的;


動態數組變成靜態數組

例:

<div class='box'>1</div>
<div class='box'>2</div>
<div class='box'>3</div>
<script>
   var aDiv = document.getElementsByClassName( 'box' );
        aDiv[0].className = 'wrap';
        alert( aDiv[0].innerHTML );
</script>

這里是彈出2;


image.png

為什么呢?
因為:上面class已經被改了,通過class獲取是動態方法,所以aDiv[0].innerHTML的時候會重新再去獲取,這里只剩下2和3的盒子有box,所以只能獲取到2的


image.png

解決方法

把動態數組變成靜態數組

var arrCh = [];
for(var i=0 ; i<aDiv.length ; i++){
    arrCh[i] = aDiv[i];//循環一下把原來的分別存放到arrCh里 這時候就變成靜態了
    }
aDiv[0].className = 'wrap';
alert( arrCh[0].className );

彈出來是1;


image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375