2 回答

TA貢獻1943條經驗 獲得超7個贊
提供的代碼似乎工作正常 - 正如注釋中所述 - 您放置外部js的位置 - 有所不同 - 它應該放置在代碼的末尾 - 就在結束正文標記之前。通常,將所有外部 CSS 文件放在 head 中,將所有外部 js 文件放在 body 中,除非 javascript 中需要一些基于渲染的邏輯。
在本例中 - javascript 旨在使用 querySelector() 來識別按鈕 - 但它不在 DOM 中,因此無法識別。
另外 - 您可以簡化您的代碼,只需在單擊時切換變量,然后使用三元組來添加/刪除一個類,并將背景顏色設置為該類。使用附加樣式的類總是比通過 JavaScript 修改 CSS 更好。
var button1 = document.querySelector("button");
var isPurple = false;
button1.addEventListener("click", function(){
isPurple = !isPurple;
isPurple
? document.body.classList.add('purple')
: document.body.classList.remove('purple')
});
.purple {
background: purple;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button>click me</button>
<script src="MyTitle.js"></script>
</body>
</html>
當然 - 您實際上可以完全刪除變量 - 如果您可以在可能的情況下遠離全局變量,它總是更好 - 下面只是在單擊按鈕時切換類。
var button1 = document.querySelector("button");
button1.addEventListener("click", function(){
document.body.classList.toggle('purple')
});
.purple {
background: purple;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="MyTitle.js"></script>
</head>
<body>
<button>click me</button>
<script src="MyTitle.js"></script>
</body>
</html>

TA貢獻1836條經驗 獲得超4個贊
問題是,當 JavaScript 運行時,按鈕元素還不存在于 DOM 中。之后加載它,然后它應該就可以正常存在了。
一般來說,明智的做法是加載此類 JS,即在加載時立即運行,或者將其放入 window.onload 函數中(特別是如果代碼依賴于已加載的圖像)。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button>click me</button>
<script src="MyTitle.js"></script> </body>
</html>
添加回答
舉報