我在網頁上創建了一個亮/暗模式切換。toggle本身是一個圖像,單擊它會改變頁面背景顏色和文本顏色,以及一些附帶的東西,如圖像背景顏色的改變。當圖像被點擊時,它調用一個JS函數,為每個需要改變的元素切換一個類。最初,我為每個元素準備了一個函數,用一個獨特的類來觸發各種變化,這很有效,但是我想簡化這個函數,讓所有元素共享一個& quot亮/暗模式& quot類等函數可以切換它們。然而,現在代碼似乎沒有像預期的那樣響應。我對JavaScript很陌生,所以我確信這是一個明顯的錯誤。一個不同的腳本在頁面上工作,所以頁面鏈接。js文件正確。請看下面我的代碼。我刪掉了我認為不相關的部分。如果有更好的方法,我洗耳恭聽。謝謝大家!
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body class="light-mode">
<span class="light-switch-span">
<img class="light-switch light-mode" src="idea.png" onclick="lightMode()">
</span>
<script src="myScript.js"></script>
<div class="photo-div">
<img class="photo light-mode" src="img.png"></div>
</div>
</body>
</html>
/* CSS */
body {
margin: 0;
font-family: 'Poppins';
background-color: black;
color: white;
}
body.light-dark {
background-color: white;
color: black;
transition: 0.5s;
}
.light-switch-span {
padding: 0;
}
.light-switch {
width: 2.5%;
height: auto;
position: absolute;
right: 0%;
object-fit: contain;
margin-right: 5%;
transition: filter .5s ease-in-out;
}
.light-switch.light-dark {
-webkit-filter: grayscale(0%);
filter: grayscale(0%);
}
.photo {
object-fit: contain;
height: auto;
width: 100%;
border: 10px solid;
border-radius: 50%;
background-color: white;
transition: filter .5s ease-in-out;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.photo.light-dark {
background-color: black;
}
// JavaScript
function lightMode() {
var all = document.querySelector(".light-mode");
for(var i = 0; i < all.length; i++) {
element.classList.toggle("light-dark");
}
}
首先,您必須使用querySelectorAll方法來獲取所有匹配的元素
你從哪里得到元素變量?我認為你應該試著這樣做
function lightMode() {
var all = document.querySelectorAll(".light-mode");
for(var i = 0; i < all.length; i++) {
// replace element for all[n]
all[i].classList.toggle("light-dark");
}
}
下一篇vue一閃