2012-09-27 84 views
1

我在設置變量時遇到問題,找不到任何有用的文檔。Javascript:將變量設置爲nodeValue不起作用

這工作:

<!DOCTYPE html> 
<html> 
<body onload="alert(document.getElementById('foo').firstChild.nodeValue)"> 
    <a id="foo" href="old">Foobar</a> 
</body> 
</html> 

但是,這並不工作:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript"> 
    var theText = document.getElementById('foo').firstChild.nodeValue ; 
    </script> 
</head> 
<body onload="alert(theText)"> 
    <a id="foo" href="old">Foobar</a> 
</body> 
</html> 

警報說, 「不確定」。我真正想做的是這樣的事情,這也不起作用:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript"> 
    var theElement = document.getElementById('foo') ; 
    var theText = theElement.firstChild.nodeValue ; 
    document.write(theElement.getAttribute('href')) ; 
    theElement.setAttribute('href', theText) ; 
    document.write(meta.getAttribute('href')) ; 
    </script> 
</head> 
<body> 
    <a id="foo" href="old">Foobar</a> 
</body> 
</html> 

爲什麼這不起作用?

回答

1

腳本運行時,foo元素不存在。如果您檢查JavaScript控制檯,你應該看到一個錯誤,沿着這個線路:

Uncaught TypeError: Cannot read property 'firstChild' of null

你得到這個錯誤,因爲getElementById將返回null如果你正在尋找的元素沒有找到。

您需要在標記後執行JavaScript代碼。將script標記移動到body的底部,或將其放入DOM就緒/加載事件處理程序中。例如:

<body onload="alert(theText)"> 
    <a id="foo" href="old">Foobar</a> 
    <!-- Now the `foo` element actually exists, our script can find it --> 
    <script type="text/javascript"> 
     var theText = document.getElementById('foo').firstChild.nodeValue; 
    </script> 
</body> 
+0

Tworks。真棒。現在,只要我能回到我生命中的最後三個小時...... – Rachel

相關問題