我有一個相對微不足道的問題,這導致我被難住了幾個小時
我試圖讓我的按鈕呼叫一個記錄到控制臺的 JavaScript 函式
這是我的 HTML
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="script.js"></script>
<meta charset="UTF-8">
<title>McKinsey Prep</title>
<div>
<button onclick="click()">Some Button</button>
</div>
</head>
<body>
</body>
</html>
這里的按鈕呼叫了這個 JavaScript 檔案中的 click() 方法
console.log("Code has reached here")
function click(){
console.log("Button was clicked REEEEe")
}
script.js 檔案只有這個功能,我不想在我的 HTML 檔案中執行代碼
當我運行我的 index.js 時,它會列印第一條列印陳述句,但是當我單擊按鈕時,函式呼叫中的 console.log 不會出現在控制臺上
筆記
我左鍵單擊我的 index.html 并按運行以運行我的代碼。
可能是什么問題?
uj5u.com熱心網友回復:
Click() 是一個保留名稱,您不能在函式上使用它,因為 JS 上有一個具有該名稱的本機方法。
更改函式的名稱,然后重試。 這是一個例子
<button onclick="clicked()">Some Button</button>
function clicked(){
console.log("Button was clicked REEEEe")}
uj5u.com熱心網友回復:
函式的名稱click
, 是問題所在。click
不是 JavaScript 中的保留字,但該名稱確實存在于 onclick 處理程式運行的范圍內的其他位置。您有 2 個選項:
- 更改函式名稱(
doClick
例如)。 window.click
通過在處理程式中參考它來限定函式名稱onclick
:onclick="window.click()"
這里有更深入的解釋:javascript function name cannot set as click?
與此無關,但在除錯程序中可能會使某人感到困惑:在您的示例代碼中,您<div>
位于<head>
HTML 頁面的一部分中。該內容實際上應該在下面的<body>
部分中,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="script.js"></script>
<meta charset="UTF-8">
<title>McKinsey Prep</title>
</head>
<body>
<div>
<button onclick="doClick()">Some Button</button>
</div>
</body>
</html>
uj5u.com熱心網友回復:
為什么將 HTML 代碼放在 head 部分?最好將 HTML 內容移動到正文部分。此外,一個好的做法是始終使用 script 標簽的defer屬性。此屬性允許您在決議所有 HTML 后加載腳本。這是一個例子:
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="script.js"></script>
<meta charset="UTF-8">
<title>McKinsey Prep</title>
</head>
<body>
<div>
<button onclick="click()">Some Button</button>
</div>
</body>
</html>
另外,我想指出其他回答者所犯的錯誤。“點擊”一詞不是 JavaScript 保留字。它可以用作函式的名稱,如下所示:
function click() {
alert("Hi");
}
click(); // alerts `Hi`
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/505356.html
標籤:javascript html dom