【发布时间】:2021-10-19 03:50:00
【问题描述】:
我想选择 main 类中属性为 [data-direction] 的所有元素
<div class="main">
<div data-direction="top">1</div>
<div data-direction="top">2</div>
<div>3</div>
</div>
<div class="main">
<div data-direction="top">3</div>
<div>4</div>
<div data-direction="top">5</div>
</div>
所以我可以在特定类中选择带有data-direction 的每个 div。比如:main[x].style.top = '10px'
myElement = document.querySelectorAll('.main');
main = myElement.querySelectorAll('[data-direction]');
for (var i = 0; i < myElement.length; i++) {
myElement[i].style.position = 'relative';
for (var x = 0; x < parallaxStart.length; x++) {
main[x].style.top = '10px';
}
}
【问题讨论】:
-
使用
myElement.querySelectorAll('div[data-direction]');而不是你的代码,你需要指定元素,如果你确定main和myElement的长度是一样的,使用一个for循环 -
myElement和main是集合,因此名称应该是复数。 -
如果要选择所有具有
data-direction属性并且是类main元素的后代的元素,可以使用document.querySelectorAll('.main [data-direction]');;如果你只想要main元素的直接子元素,你可以使用document.querySelectorAll('.main > [data-direction]'); -
a) 为什么不在 CSS 中设置
position: relative?我看不出在 javascript 中设置它们有什么好处。 b.1) 您没有在数据方向 div 上设置position: relative,并且 b.2) 您不应该使用top来移动,而是使用transform: translateY()来避免整个页面必须重新计算位置。 -
除了数组之外,
parallaxStart是什么?
标签: javascript html custom-data-attribute