2016-01-15 70 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>