2016-11-07 59 views
0

我正在加載一些HTML的Javascript,當完成後,我想加載一些其他腳本,使用剛加載的HTML。當我同時運行兩個版本時,有一個很好的變化,那就是HTML之前還沒有準備好,所以會出現錯誤。注入的HMTL和JavaScript由其他人創建。並且由於數字的原因,手動完成是不可行的。使用Javascript添加HTML,想要知道它何時完成加載

我不能使用window.onload或其他喜歡它的原因是頁面的一部分被JS取代。通常我只是加載新的東西,然後當用戶與它交互時轉到下一部分。

這是正確的方式來確保新的 HTML完成加載,然後加載新的Javascript?

var rowDiv = document.createElement("div"); 
rowDiv.className = "row info-row"; 
rowDiv.addEventListener("load", addMoreJS();); 
// Add more HTML things 
// Bring it All together. 
domelement.appendChild(rowDiv); 

,如果這個問題是不是新的,有一個很好的回答,請指向它

+0

該JavaScript是同步的,所以最後一行將始終在前一行之後運行(除非使用異步調用,超時等)。這就是說你對「加載」的定義是什麼?這個問題不是很清楚TBH,需要更多詳細信息 – Liam

+0

爲此,您可以在body load事件中動態加載腳本,這將幫助您使用html加載第二個腳本。 e.x. – Husen

回答

3

您可能需要更改 - >

rowDiv.addEventListener("load", addMoreJS();); 

喜歡的東西 - >

rowDiv.addEventListener("load", addMoreJS); 

否則addMoreJS在加載之前執行e通風口甚至發生火災。

+1

↑this。以及一些好的建議:事件監聽器只需執行回調。第二個參數需要一個函數或一個eval表達式。執行一個函數並不會返回一個函數,但是這個函數會返回什麼東西(是的,它甚至可以返回一個函數,但如果是這樣的話,我暗示你已經知道我在說什麼了)。 – GottZ

+0

是的,這有效。不太習慣用作參數。 – Flummox

相關問題