如何解决querySelectorAll不适用于类,但是普通的querySelector很好
我一直在制作日历,希望在点击时打开所有门。 我放下了动画,并且可以使用,但是仅当我使用querySelector时才可以; querySelectorAll似乎不起作用。 我已经做了三扇门来进行测试,但还没有让它们全部动起来,以及为所有这些动画显示背景(但这是一个不同的主题)。 我觉得问题出在我编写HTML的方式中,因为JS以前已经工作过。 我现在还很陌生,希望能够在不利用网格或引用其他代码的情况下制作日历。
下面的代码
HTML
<div class="door-back">
<button class="door d25">25</button>
<button class="door d24">24</button>
<button class="door d23">23</button>
</div>
CSS(包括我为门位置设置的随机位置)
.door-back {
position: relative;
height: 50px;
width: 50px;
border-radius: 50px;
background: hotpink;
margin: 50px;
}
.door {
position: absolute;
height: 50px;
width: 50px;
color: white;
border: 2px solid teal;
border-radius: 50px;
background: indianred;
cursor: pointer;
transform-origin: left;
transition: all 0.5s ease-in-out;
}
.d25 {
top: 100px;
bottom: 100px;
left: 590px;
right: 5px;
}
.d24 {
top: 300px;
bottom: 500px;
left: 390px;
right: 50px;
}
.d23 {
top: 500px;
bottom: 100px;
left: 800px;
right: 600px;
}
.doorOpen {
transform: perspective(1200px) translateZ(0px) translateX(0px) translateY(0px) rotateY(-150deg);
}
JavaScript
const door = document.querySelectorAll('.door')
door.addEventListener('click',toggleDoor)
function toggleDoor() {
door.classList.toggle('doorOpen')
}
就像我在上面说的那样,querySelector('。door')可以工作,但仅适用于d25,因为它是此类对象中的第一个元素。门我需要使其成为阵列吗?也许我应该在做querySelectorAll(“ button”)?
任何帮助和/或建议将不胜感激!谢谢,希望您在外面安全!
解决方法
querySelectorAll返回一个NodeList,而不是一个元素。因此,您不能直接向其添加事件监听器。
button1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v,MotionEvent event) {
// Poll time and do something with it.
}
}
button2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v,MotionEvent event) {
// Poll time and do something else with it.
}
}
button3.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v,MotionEvent event) {
// Poll time and do something else with it.
}
}
button4.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v,MotionEvent event) {
// Poll time and do something else with it.
}
}
querySelector之所以起作用,是因为它返回了第一个匹配的元素。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。