当我点击按钮时,除非我在html中调用该函数,否则没有任何反应。我想删除所有内联JavaScript。我已经包含了有效的html注释部分。在此先感谢您的帮助!
JavaScript的:
var welcomeString;
const TEST = 1;
function setWelcomeString() {
"use strict";
welcomeString = prompt("Please enter your name: ", "nobody");
}
function writeOutput() {
"use strict";
document.getElementById("demo").innerHTML = "Hello, " + welcomeString;
}
function main() {
"use strict";
setWelcomeString();
document.getElementById("sayHi").onclick = writeOutput();
}
main();
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>**SET TITLE**</title>
<link href="css/style.css" rel="stylesheet">
<script src="firstScript.js"></script>
</head>
<body>
<h1 id="wiggles">TEMPLATE</h1>
<!--<button id="sayHi" onclick="writeOutput()">Say Hi</button>-->
<button id="sayHi">Say Hi</button>
<p id="demo"></p>
</body>
</html>
答案 0 :(得分:4)
当您将一个函数指定为事件的处理程序时,您需要分配函数本身,而不是执行该函数并像您一样分配它的返回值。改变这个:
document.getElementById("sayHi").onclick = writeOutput(); // parens
对此:
document.getElementById("sayHi").onclick = writeOutput; // no parens
这是一个jsfiddle link,其中有一个工作示例。
答案 1 :(得分:1)
您必须在load
内添加整个代码,就像这样
window.load = function(){
// your javascript here
};
另外,正如jbabey所说,使用
document.getElementById("sayHi").onclick = function(){ writeOutput();};
或者
document.getElementById("sayHi").onclick = writeOutput;
答案 2 :(得分:1)
你有两个问题。
第一个被jbabey覆盖。
第二个是firstScript.js出现在你的按钮之前。当您为其分配onClick
处理程序时,这是有问题的。它在dom中不存在。
尝试将整个主脚本放在window.onload = function () { ... }
内或将其移到标记的底部。