2014-05-06 76 views
4

我嘗試獲取id爲「div」的元素,但是我在firefox中得到了TypeofError,原因是什麼?如何正確獲取元素的ID?

<script type="text/javascript"> 
window.onload = function(){ 
    var oParent = document.getElementsByTagName('div')[0]; 
    console.log(oParent); 
    var arr = oParent.getElementById('div'); 
    console.log(arr); 
    } 
</script> 
<div class="test"> 
<div></div> 
<div></div> 
<div id="div"></div> 
<div></div> 

+0

完全無關,但我建議使用'document.querySelector( 'DIV')'代替'document.getElementsByTagName( 'DIV')[0]' – axelduch

回答

7

你應該

var arr = document.getElementById('div'); 

這種替代

var arr = oParent.getElementById('div'); 

因爲getElementByIddocument的方法,而不是申報單的。

+0

感謝你的指導。現在我有一種DOM的感覺。 –

1

它不起作用,因爲您使用oParent對象的方法「getElementById」。但是這個方法可以從文檔對象中獲得。

var arr = document.getElementById('div'); 
+0

這是真的,也許我需要更多地瞭解規範。 –

+0

爲什麼這個答案是downvoted? –

+0

由於Brushan K不喜歡我之前的評論:p thx無論如何 –

0

您正在通過名稱查找父級,它將返回一個數組而不是單個值。 因此您的代碼應該使用:

<script type="text/javascript"> 
    window.onload = function(){ 
     var oParent = document.getElementsByTagName('div');// this return array 
     console.log(oParent); 
     // loop through array and find your desired div 
     for (var j=0; j<oParent.length; j++) 
     { 
     if(oParent[j].id == 'div') 
     { 
      console.log(oParent);// here is your div 
     } 
     } 
    } 
</script> 


但是當你正在尋找divid=div,那麼你應該使用getElementById找到的元素。

見下面代碼

<script type="text/javascript"> 
    window.onload = function(){ 
     var oParent = document.getElementById('div');// this return div with id='div' 
     console.log(oParent); 

    } 
</script> 
+0

不會工作,因爲您仍然使用oParent對象中的「getElementById」而不是來自文檔。 –

+0

@FrédéricGRATI我已更正了我的答案,並檢查了父母的id =「div」 –

+0

,儘管您的回答對我有用,但我應該建議您可以改進您的代碼風格。更簡單!就像這樣,document.getElementById。也感謝你的幫助。 –