javascript - 如何删除网格内的div?

标签 javascript html css grid

如何删除网格中类名为“grid-item”的 div?如何迭代它们并删除它们?我想使用 Reset() 函数删除类名为“grid-item”的每个元素。

const container = document.getElementById("container");

let canvasSize = Number(prompt("Enter amount of squares per side to make the new grid"));

let resetButton = document.createElement("button");
resetButton.innerHTML = "Reset Grid";
document.body.appendChild(resetButton);

function makeRows(_canvasSize) {
  const rows = canvasSize
  const cols = canvasSize
  container.style.setProperty('--grid-rows', rows);
  container.style.setProperty('--grid-cols', cols);
  for (c = 0; c < (rows * cols); c++) {
    let cell = document.createElement("div");
    container.appendChild(cell).className = "grid-item";
    cell.addEventListener('mouseover', 
        e => e.target.style.backgroundColor = "black"
    )
  };
};

resetButton.addEventListener('click', (e) => {
    reset();
});

var list= document.getElementsByClassName("events");

function reset() {
    container.classList.remove("grid-item");
    makeRows(canvasSize)
}

makeRows(canvasSize);

最佳答案

您可以使用querySelectorAll()查找类为“grid-item”的所有元素,然后为每个元素查找其父节点,使用 removeChild()删除元素,例如:

function reset() {
  document
    .querySelectorAll(".grid-item")
    .forEach((e) => e.parentNode.removeChild(e));
}

const container = document.getElementById("container");

let canvasSize = Number(
  prompt("Enter amount of squares per side to make the new grid")
);

let resetButton = document.createElement("button");
resetButton.innerHTML = "Reset Grid";
document.body.appendChild(resetButton);

function makeRows(_canvasSize) {
  const rows = canvasSize;
  const cols = canvasSize;
  container.style.setProperty("--grid-rows", rows);
  container.style.setProperty("--grid-cols", cols);
  for (let c = 0; c < rows * cols; c++) {
    let cell = document.createElement("div");
    container.appendChild(cell).className = "grid-item";
    cell.addEventListener(
      "mouseover",
      (e) => (e.target.style.backgroundColor = "black")
    );
  }
}

resetButton.addEventListener("click", (e) => {
  reset();
});

var list = document.getElementsByClassName("events");

function reset() {
  document
    .querySelectorAll(".grid-item")
    .forEach((e) => e.parentNode.removeChild(e));
}

makeRows(canvasSize);
.grid-item {
  border: 1px solid black;
  width: 10px;
  padding: 10px;
  margin: 5px
}
<div id="container"></div>

关于javascript - 如何删除网格内的div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61155301/

相关文章:

javascript - Array.map() 与 for 循环对字符串进行标题封装

javascript - 在 JSON 文件中创建时间线并根据该 JSON 中的日期时间更新页面

python - SSL:尝试打开 Nav Canada 网站时出现 CERTIFICATE_VERIFY_FAILED

javascript - Apache Cordova : CSP Error

javascript - 除了 extjs 的可编辑网格中给出的更新和取消之外,添加新按钮 "Save and Next"

jquery - CSS 不会随着 .addClass() 或 .css() 动态改变

html - 如何将多行输入转换为 Bootstrap 行输入

html - 具有统一填充/边距的 Twitter Bootstrap 插入面板?

javascript - Jquery按钮多次替换图像

html - 在绝对位置内水平对齐文本