2016-11-27 48 views
-1

我有兩個文件。div的innerHTML在腳本分離時不起作用

下面是index.html的:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Question 2</title> 
     <script type="text/javascript" src="q2.js"></script> 
    </head> 
    <body> 
     <div id="output"></div> 
    </body> 
</html> 

這裏是q2.js:

function go(a) { 
    var out = document.getElementById("output"); 
out.innerHTML = "hdi"; 
} 

window.onload=go() 

這是行不通的。它應該填充空格到「hdi」,但它不會。

但是,如果我這樣做在一個文件中使用wihtout q2.js,它的工作原理,就像下面:

<!DOCTYPE html> 
<html> 
<body> 

<div id="output"></div> 

<script> 
var NUMBERS = 500; 
var HEADERS = 20; 

function go(a) { 
var out = document.getElementById("output"); 
out.innerHTML = "hdi"; 
} 

window.onload=go() 
</script> 

</body> 
</html> 

爲什麼使用一個文件,但是當2個文件分隔不工作的時候工作的呢? 有沒有辦法做到這一點使用2個文件?

非常感謝您

回答

2

你應該分配的實際功能window.onload而是要調用的函數和分配這是未定義返回值:

變化

window.onload=go() 

window.onload=go; 

它只出現t o在第二個版本中正常工作,因爲函數中引用的元素已經存在,但實際上並未等待加載事件發生。

+0

天哪前移動劇本

您的代碼應該工作。你回答。 –

0

首先,將JavaScript代碼放入其自己的JavaScript文件通常是一種很好的做法。更好的可維護性和可重用性。

其次,它通常是把劇本剛剛閉幕</body>標籤在年底前一個很好的做法,而不是在<頭>標籤。如果您的代碼位於頭部中,並且引用主體中更下面的元素,那麼它將無法看到它們,因爲它們尚未加載。如果你只是關閉主體

<body> 
    <div id="output"></div> 

    <script type="text/javascript" src="q2.js"></script> 
</body> 
+0

不完全準確。假設OP實際上需要在函數觸發之前加載的圖像...它不會被寫入時的加載事件觸發 – charlietfl

+0

是的,1)這就是我通常寫的原因,而不是在每種情況下2)原始圖像中沒有圖像問題3)如果腳本放在DOM的末尾,「window.onload」實際上會變成多餘的。 –