[英]Why doesn't this piece of JavaScript code work when placed inside <head> but works when placed at the bottom of <body>
我试图编写这个基本的JavaScript程序,当按下按钮时该程序会更改背景色。
当我将此JS代码放在'head'标签内时,它不起作用,但是当我将其放在'body'标签内时,它却起作用了。 (当放在体内时,我删除了window.onload)
<script>
window.onload = function(){
var para = document.getElementById("para");
function togglecolor(){
if(para.className != "yellow") para.className = "yellow";
else para.className = "notYellow";
}
}
</script>
这是HTML:
<h1 id="para" class="">Hello World! </h1>
<button onClick="togglecolor();">Press Me</button>
我无法理解为什么将其放置在“头部”内时不起作用。
这是一个范围问题。 您正在另一个函数中定义函数。 这意味着只能在该函数内部访问它。 将其移到外面,一切都会正常。
<script>
function togglecolor(){
var para = document.getElementById("para");
if(para.className != "yellow") para.className = "yellow";
else para.className = "notYellow";
}
</script>
可能是由于执行JavaScript时尚未加载id =“ para”的h1标签
我认为原因是您在window
加载事件hanlder中定义了toggleColor
方法。 尝试将其移出,然后尝试将代码放入头部。
<script>
function togglecolor(){
var para = document.getElementById("para")
if(para.className != "yellow")
para.className = "yellow";
else
para.className = "notYellow";
}
window.onload = togglecolor;
</script>
http://sandbox.phpcode.eu/g/ea6d3/3
作品。 将window.onload
更改为$(function(){
<html>
<body>
<style>
.yellow {color:yellow;}
.notYellow {color:blue;}
</style>
<script>
function togglecolor(){
var para = document.getElementById("para");
if(para.className != "yellow")
para.className = "yellow";
else para.className = "notYellow";
}
</script>
</head>
<body>
<h1 id="para" class="notYellow">Hello World! </h1>
<button onClick="togglecolor();">Press Me</button>
</body>
</html>
原因可能是由于您放置了脚本。 加载脚本后,该脚本将在此时运行。 因此,如果您有这样的html文件:
<html>
<head />
<body>
<script />
<h1 />
<button />
</body>
</html>
该脚本文件将要运行,然后页面的其余部分将继续加载。 因为您已将para
的赋值分配到togglecolor
函数的上下文之外,所以它在加载时会获取其值; 可能在实际的HTML元素加载之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.