[英]EventListener not working JavaScript and I don't know why
I am trying to add a class .red
and remove a class .miniSquare
once you click on a div
with the class of .miniSquare
.我正在尝试添加一个 class
.red
并删除一个 class .miniSquare
一旦你点击一个带有 .miniSquare 的.miniSquare
的div
。 Unfortunetly when I click on each of the div
s nothing happens.不幸的是,当我单击每个
div
时,没有任何反应。
Here are the classes (in case you were wondering)这是课程(以防您想知道)
.grid{
height: 500px;
width: 500px;
display: flex;
flex-wrap: wrap;
background-color: green;
}
.miniSquare {
height: 40px;
width: 40px;
background-color: blue;
margin: 3px
}
.red{
background-color: red;
height: 40px;
width: 40px;
margin: 3px
}
Here is the JS code:这是JS代码:
const miniSquares = document.querySelector(".miniSquare");
miniSquares.addEventListener("click", function(){
this.classList.remove("miniSquare");
this.setAttribute("class", "red");
});
The Following Is Extra Stuff In Case You Wanted To See以下是您想看的额外内容
Full JS Code完整的 JS 代码
const grid = document.querySelector(".grid");
let squares = [];
function createBoad(){
for (let i = 0; i<100; i++){
const square = document.createElement('div');
square.setAttribute("id", i);
square.setAttribute("class", "miniSquare");
grid.appendChild(square);
squares.push(square);
}
}
createBoad()
const miniSquares = document.querySelector(".miniSquare");
miniSquares.addEventListener("click", function(){
this.classList.remove("miniSquare");
this.setAttribute("class", "red");
});
Full Code (You have the full code already but this includes the HTML)完整代码(您已经拥有完整代码,但其中包括 HTML)
document.addEventListener("DOMContentLoaded", () => { const grid = document.querySelector(".grid"); let squares = []; function createBoad(){ for (let i = 0; i<100; i++){ const square = document.createElement('div'); square.setAttribute("id", i); square.setAttribute("class", "miniSquare"); grid.appendChild(square); squares.push(square); } } createBoad() const miniSquares = document.querySelector(".miniSquare"); miniSquares.addEventListener("click", function(){ this.classList.remove("miniSquare"); this.setAttribute("class", "red"); }); });
.grid{ height: 500px; width: 500px; display: flex; flex-wrap: wrap; background-color: green; }.miniSquare { height: 40px; width: 40px; background-color: blue; margin: 3px }.red{ background-color: red; height: 40px; width: 40px; margin: 3px }
<.DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Bitcoin Mining</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="grid"> </div> <script src="app.js" charset="utf-8"></script> </body> </html>
You are trying to select the div's before you create them: Here's the changed code.您正在尝试 select 在创建 div 之前:这是更改后的代码。
const grid = document.querySelector(".grid");
let squares = [];
function createBoad() {
for (let i = 0; i < 100; i++) {
const square = document.createElement("div");
square.setAttribute("id", i);
square.setAttribute("class", "miniSquare");
grid.appendChild(square);
squares.push(square);
}
const miniSquares = document.querySelectorAll(".miniSquare");
miniSquares.forEach((item) =>
item.addEventListener("click", function () {
this.classList.remove("miniSquare");
this.setAttribute("class", "red");
})
);
}
createBoad();
When you are creating the square object you must add the listener to this object当您创建方形 object 时,您必须将侦听器添加到此 object
function createBoad(){
for (let i = 0; i<100; i++){
const square = document.createElement('div');
square.setAttribute("id", i);
square.setAttribute("class", "miniSquare");
grid.appendChild(square);
squares.push(square);
}
}
document.addEventListener("DOMContentLoaded", () => { const grid = document.querySelector(".grid"); let squares = []; function createBoad(){ for (let i = 0; i<100; i++){ const square = document.createElement('div'); square.setAttribute("id", i); square.setAttribute("class", "miniSquare"); square.addEventListener("click", function(){ this.classList.remove("miniSquare"); this.setAttribute("class", "red"); }); grid.appendChild(square); squares.push(square); } } createBoad() });
.grid{ height: 500px; width: 500px; display: flex; flex-wrap: wrap; background-color: green; }.miniSquare { height: 40px; width: 40px; background-color: blue; margin: 3px }.red{ background-color: red; height: 40px; width: 40px; margin: 3px }
<.DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Bitcoin Mining</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="grid"> </div> <script src="app.js" charset="utf-8"></script> </body> </html>
i do this code and its work so when click to the class it changed我执行此代码及其工作,因此当单击 class 时,它发生了变化
<.DOCTYPE html> <html> <body> <style>:miniSquare { height; 40px: width; 40px: background-color; blue: margin. 3px }:red{ background-color; red: height; 40px: width; 40px: margin. 3px } </style> <div class="miniSquare">hello.</div> <script> const miniSquares = document.querySelector(";miniSquare"). miniSquares,addEventListener("click". function(){ this.classList;remove("miniSquare"). this,setAttribute("class"; "red"); }); myFunction(); </script> </body> </html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.