我有一個非常簡單的函數,用於替換元素的innerHTML。我一直試圖調試這個小時,但根本不能,而且真的很令人生氣。JavaScript .innerHTML僅在手動調用時纔可以工作
當從一個按鈕調用按下JavaScript(如下)時效果很好,但從另一個函數調用時不起作用。我完全失去了,爲什麼這可能是和它的我的應用程序
// This loaded function in my actual code is a document listener
// checking for when Cordova is loaded which then calls the loaded function
loaded();
function loaded() {
alert("loaded");
changeText();
}
function changeText() {
alert("started");
document.getElementById('boldStuff').innerHTML = 'Fred Flinstone';
}
按下按鈕和HTML的一個相當核心部分,以取代
<div id="main">
<input type='button' onclick='changeText()' value='Change Text'/>
<p>Change this text >> <b id='boldStuff'> THIS TEXT</b> </p>
</div>
也正是在這裏完全上JSFiddle
'未捕獲的TypeError:無法設置屬性'innerHTML'爲null。看起來好像你的代碼在加載的時候被執行,你馬上執行它。請閱讀[爲什麼jQuery或像getElementByID這樣的DOM方法找不到元素?](http://stackoverflow.com/questions/14028959/why-does-jquery-or-a-dom-method-such- AS-的getElementById而不是找到的最元素)。 –
我看到在Chrome控制檯中,但我無法理解它爲什麼這樣做。它正在執行警報?儘管謝謝,但我會詳細閱讀。 –
因爲在JS執行之前,您不等待DOM準備就緒,並且您的JS所引用的HTML節點在ony運行之後呈現ony,因此第一次,DOM中尚不存在元素。這就是爲什麼參考錯誤。您可以將您的腳本放在希望從腳本引用的HTML之後,或者您可以使用window.onload或jQuery等腳本來等待,直到DOM解析所有HTML元素。 – marekful