我有一些按钮,如果你点击它们,它们应该旋转,然后背面显示::After伪元素.问题是我的代码只适用于第一个按钮.

我编写的翻转按钮的代码是有效的,我只需要知道如何将它应用于其余的按钮:

const flip = document.querySelector(".reserve");

function buttonFlip() {
  flip.classList.toggle("flip")
}

flip.addEventListener('click', () => {
  buttonFlip();
});
.button {
  position: relative;
  transition: all .5s linear;
  -webkit-transform-style: preserve-3d;
  -webkit-backface-visibility: visible;
}

.button::after {
  content: 'X';
  transform: rotateY(180deg);
  -webkit-transform-style: preserve-3d;
  -webkit-backface-visibility: hidden;
  background-color: #f00;
}

.flip {
  transform: rotateY(180deg);
}
<button class="button reserve" role="button"><i class="bx bx-bell icon"></i>Reserveer</button>

我知道我应该使用queryseltorall,但我不确定该怎么做,因为我是JS初学者,我正试图从逻辑的Angular 来编写代码.我环顾四周,看到了非常相似的问题,但当试图将它们应用到我的代码中时,似乎从来没有完全正确地解决过.

推荐答案

要针对每个单独的按钮,您可以使用querySelectorAll().从那里,您可以循环遍历所有这些实例,将click事件处理程序附加到每个单独的实例.从那里,您可以使用引发的事件的target属性来仅切换该元素上的类:

const flipButtons = document.querySelectorAll(".reserve");
flipButtons.forEach(button => {
  button.addEventListener('click', e => {
    e.target.classList.toggle("flip")
  })
});

// this is another version of the above as a one-liner
// flipButtons.forEach(button => button.addEventListener('click', e => e.target.classList.toggle("flip")));
.button {
  position: relative;
  transition: all .5s linear;
  -webkit-transform-style: preserve-3d;
  -webkit-backface-visibility: visible;
}

.button::after {
  content: 'X';
  transform: rotateY(180deg);
  -webkit-transform-style: preserve-3d;
  -webkit-backface-visibility: hidden;
  background-color: #f00;
}

.flip {
  transform: rotateY(180deg);
}
<button class="button reserve" role="button"><i class="bx bx-bell icon"></i>Reserveer</button>
<button class="button reserve" role="button"><i class="bx bx-bell icon"></i>Reserveer</button>
<button class="button reserve" role="button"><i class="bx bx-bell icon"></i>Reserveer</button>
<button class="button reserve" role="button"><i class="bx bx-bell icon"></i>Reserveer</button>

Javascript相关问答推荐

容器如何更改默认插槽中子项的显示?

如何在表格上拥有水平滚动条,在正文页面上拥有垂直滚动条,同时还对html表格的标题使用位置粘性?

Vega中的模运算符

vscode扩展-webView Panel按钮不起任何作用

如何在不创建新键的情况下动态更改 map 中的项目?

Next.js(react)使用moment或不使用日期和时间格式

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

在grafana情节,避免冲突的情节和传说

如何让npx在windows中运行js脚本?

无法从NextJS组件传递函数作为参数'

如何避免页面第一次加载时由于CSS样式通过JavaScript更改而出现闪烁

如何使onPaste事件与可拖动的HTML元素一起工作?

在浏览器中触发插入事件时检索编码值的能力

在Java中寻找三次Bezier曲线上的点及其Angular

使用Nuxt Apollo在Piniastore 中获取产品细节

在画布中调整边上反弹框的大小失败

回溯替代方式

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?

如何在Web项目中同步语音合成和文本 colored颜色 更改

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据