javascript - 如何一次选择两个元素并使我的代码使用 querySelector 影响它们?

标签 javascript html

我正在为我的网站添加夜间模式。我已经完成了大部分编码部分,同时开始更改有关设计的一些部分。我将需要更改 HTML 中的 hr 并为它们添加实线边框以使其在暗模式下可见。这是我的代码:

<p class="dark">
  <a id="moon" href="#" onclick="localStorage.setItem('mode', (localStorage.getItem('mode') || 'dark') === 'dark' ? 'light' : 'dark'); 
                localStorage.getItem('mode') === 'dark' ? 
                document.querySelector('body').classList.add('dark') : 
                document.querySelector('body').classList.remove('dark')" title="nm">Night Mode🌓
                </a>
</p>

我想做的是使用 querySelectorclass 添加到我的 hr 中,但是一旦我添加了hr 只影响 body 而不是 hr 的代码。我该怎么做才能使代码同时影响它们。

下面的代码有效,但我也找到了一种更简单的方法来做我想做的事。对于 CSS 代码,我只是添加了这段代码,它也运行良好。

body.dark hr {
border: 1px solid #808080;
}

最佳答案

您可以使用 .querySelectorAll()NodeList.forEach() 方法

document.getElementById("moon").addEventListener("click", e => {
  localStorage.setItem('mode', (localStorage.getItem('mode') || 'dark') === 'dark' ? 'light' : 'dark'
  const elements = document.querySelectorAll("body, hr");
  elements.forEach(el => {
    if (localStorage.getItem('mode') === 'dark') {
      el.classList.add('dark') 
    } else {
      el.classList.remove('dark')
    }
  })
})

关于javascript - 如何一次选择两个元素并使我的代码使用 querySelector 影响它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843938/

相关文章:

javascript - 如何根据表行调用具有动态参数的 Javascript 方法?

html - 将产品图片与底部垂直对齐

php - HTML使用ajax和MYSQL + PHP将用户信息添加到div

javascript - 为什么在 HTML 5 网站上使用 CDATA?

javascript - 如何从express渲染html和javascript?

javascript - 如何将数据从nodejs传递到html脚本标签内部

javascript - 如何在 IE8 中转储 JavaScript 变量?

javascript - 如何在图像 src 字符串中 document.write() ?没有被解析

html - 如何将文本保留在父级中?

JavaScript 数组 2 维 for 循环