2016-01-15 93 views
0

我正在玩Javascript來回到最近開始的第二學期web類的東西的擺動,並且遇到getElementById和innerHTML工作問題。getElementById/InnerHTML函數不工作

基本上,我希望來填充空H1與動物名稱

function favAnimal() 
 
     { 
 
     document.getElementById("animal").innerHTML="cat" 
 
     }
<h1 id="animal" onload="favAnimal()">Favourite Animal Placeholder</h1>

以上不會改變任何東西。如果h1是空的,結果是相同的。我也嘗試用<div>排除使用特定元素的問題。

所有幫助表示感謝,並提前致謝!

+0

如果我沒有記錯的話'h1'沒有按」沒有'onload'事件。 – joaumg

+0

嘗試在'body'標籤上放置'onload =「favAnimal()」'。你也可以使用'innerText'而不是'innerHTML',因爲你不改變HTML。 – Quantumplate

回答

3

<h1>標記沒有onload事件處理函數,所以你的函數永遠不會被調用。

您可以使用onload處理程序來處理<body>標記,或者設置一些其他事件處理函數以將函數分配給。

如果您希望您的代碼被觸發時加載文檔時,可以用其中的一個:

window.addEventListener("load", favAnimal);  // all page resources loaded 
document.addEventListener("DOMContentLoaded", favAnimal); // HTML done parsing 

如果你只是想右後您的<h1>標籤必須執行腳本已被加載,您可以在標籤後立即撥打腳本。頁面解析/按順序執行,以使任何腳本將始終能夠引用文檔中才來的HTML元素:

<h1 id="animal">Favourite Animal Placeholder</h1> 
<script>favAnimal()</script> 

這裏有一些事情我知道的那有一個load事件:

window 
<img> 
<body> 
<iframe> 
<link> 
<script> 
<embed> 
<object> 
<video> 
<audio> 
XMLHttpRequest 

而且,幾乎有除了<a>一個srchref屬性的任何其他HTML標記。這個想法是,如果標籤正在加載一些外部資源,那麼有一個load事件來知道它何時完成加載該外部資源。如果標籤沒有加載外部資源,則可能沒有load事件。

+0

HTML5的原始規範是[here](https://www.w3.org/TR/html5/),但這種東西並不是特別容易找到。我通常使用MDN作爲我的主要參考源或HTML/Javascript的東西,但是這個特殊的問題在那裏很難找到。 – jfriend00

-2

在這裏發生的事情是,在HTML之前執行的腳本文件呈現。所以它不能找到元素,因爲它還沒有渲染。瀏覽器提供諸如onload,unload等事件。這裏你需要加載 `Document.addEventListener(「DOMContentLoaded」,init);

功能的init(){// 烏爾代碼 }`

2

load事件僅調度資源,諸如文檔,圖像,...

如果你想運行一些腳本元素已被解析剛過,只需添加一個script元素後:

<script> 
 
    function favAnimal() { 
 
    document.getElementById("animal").innerHTML = "cat"; 
 
    } 
 
</script> 
 
<h1 id="animal">Favourite Animal Placeholder</h1> 
 
<script>favAnimal()</script>