簡體   English   中英

我不知道如何使我的javascript onclick事件正常工作

[英]I can't figure out how to get my javascript onclick event to work

當我單擊按鈕時,除非我在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>

當您將函數分配為事件的處理程序時,您需要分配函數本身,而不是執行函數,並在執行操作時分配其返回值。 更改此:

document.getElementById("sayHi").onclick = writeOutput(); // parens

對此:

document.getElementById("sayHi").onclick = writeOutput; // no parens

這是帶有工作示例的jsfiddle鏈接

您必須像這樣將整個代碼添加到load

window.load = function(){
    // your javascript here
};

另外,如jbabey所述,請使用

document.getElementById("sayHi").onclick = function(){ writeOutput();};

要么

document.getElementById("sayHi").onclick = writeOutput;

你有兩個問題。

第一個被jbabey覆蓋。

第二個是firstScript.js出現在您的按鈕之前。 這是有問題的,因為當您為其分配onClick處理程序時。 它在dom中不存在。

嘗試將整個主腳本放入window.onload = function () { ... }或將其移至標記的底部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM