我有一个index.html文件:
<head>
<title>Jiggle Into JavaScript</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<p>Press the buttons to change the box!</p>
<div id="box" style="height:150px; width:150px; background-color:darkorange; margin:25px"></div>
<button type="button1" onclick="growFunc()">Grow</button>
<button type="button2" onclick="blueFunc()">Blue</button>
<button type="button3" onclick="fadeFunc()">Fade</button>
<button type="button4" onclick="resetFunc()">Reset</button>
<script type="text/javascript" src="javascript.js"></script>
</body>
我的javascript.js文件如下所示:
function growFunc() {
document.getElementById("button1").addEventListener("click",
function(){document.getElementById("box").style.height = "250px";
});
}
function blueFunc() {
document.getElementById("button2").addEventListener("click",
function(){document.getElementById("box").style.backgroundColor = "blue";
});
}
function fadeFunc() {
document.getElementById("button3").addEventListener("click", function(){
document.getElementById("box").style.backgroundColor = "orange";
});
}
function resetFunc() {
document.getElementById("button4").addEventListener("click",
function(){
document.getElementById("box").style.height = "150px";
document.getElementById("box").style.backgroundColor = "darkorange";
});
}
两个文件都在同一目录中。例如,当我尝试在Firefox中运行index.html时,单击按钮时没有任何反应。但是如果我在index.html文件中有所有函数(见下文),它就可以了。我似乎无法找到我的代码有什么问题(我是新手)。谢谢你的帮助。
<head>
<title>Jiggle Into JavaScript</title>
<p>Press the buttons to move the box!</p>
<div id="box" style="height:150px; width:150px; background-color:darkorange; margin:25px"></div>
<button id="growBtn">Grow</button>
<button id="blueBtn">Blue</button>
<button id="fadeBtn">Fade</button>
<button id="resetBtn">Reset</button>
<script type="text/javascript">
document.getElementById("growBtn").addEventListener("click", function(){
document.getElementById("box").style.height = "250px";
});
document.getElementById("blueBtn").addEventListener("click", function(){
document.getElementById("box").style.backgroundColor = "blue";
});
document.getElementById("fadeBtn").addEventListener("click", function(){
document.getElementById("box").style.backgroundColor = "orange";
});
document.getElementById("resetBtn").addEventListener("click", function()
document.getElementById("box").style.height = "150px";
document.getElementById("box").style.backgroundColor = "darkorange";
});
</script>
</body>
答案 0 :(得分:2)
您是内联单击处理程序中的绑定事件处理程序,因此单击一次时它不起作用。
在你的javascript文件中使用DOMContentLoaded
事件等待DOM完全加载然后绑定事件处理程序
document.addEventListener("DOMContentLoaded", function(event) {
//Bind event handlers
document.getElementById("button1").addEventListener("click", function(){
.....
});
});
摆脱丑陋的内联事件处理程序。
答案 1 :(得分:0)
在你的函数中你添加了一些事件监听器,这是没用的,因为当触发该函数时,已经执行了点击。
只需在功能中应用CSS更改。
另外:您的按钮没有id
,而是type
。因此,您无法使用getElementById
选择它们。