【发布时间】:2018-06-01 05:17:59
【问题描述】:
我有一些 JavaScript 代码,它正在工作(有点)。我想以某种方式压缩它,也许一次抓住两个 CSS 选择器并使用某种forEach() 循环遍历它们。
现在,两颗星的top 值得到相同的值,例如style="top: 60%"。我想让他们获得top、left、right 和transform 的不同随机值。
我意识到querySelectorAll 将返回一个 NodeList,并且可以转换为一个数组,但我不知道如何执行此操作并拥有它,因此.shooting-star-right 使用Math.random 部分获取不同的值。
我试过这个:
var stars = document.querySelectorAll('.shooting-star, .shooting-star-right');
for (let el of stars) {
shootingStar();
}
我也试过这个:
var stars = document.querySelectorAll('.shooting-star, .shooting-star-right');
stars.forEach(function() {
shootingStar();
});
这是我的工作(虽然相当混乱)代码 => 任何帮助都非常感谢 :)
init: () => {
let star = document.querySelector('.shooting-star');
let starRight = document.querySelector('.shooting-star-right');
const shootingStar = () => {
setInterval(() => {
let topPos = Math.floor(Math.random() * 80) + 1,
topPosRight = Math.floor(Math.random() * 80) + 1,
leftPos = Math.floor(Math.random() * 20) + 1,
rightPos = Math.floor(Math.random() * 20 + 1),
trans = Math.floor(Math.random() * 180) + 1,
transRight = Math.floor(Math.random() * 220) + 1;
topPos = topPos + '%',
topPosRight = topPosRight + '%',
leftPos = leftPos + '%',
rightPos = rightPos + '%',
trans = trans + 'deg',
transRight = transRight + 'deg';
star.style.top = topPos,
star.style.left = leftPos,
star.style.transform = 'rotate(' + '-' + trans + ')';
starRight.style.top = topPosRight,
starRight.style.right = rightPos,
starRight.style.transform = 'rotate(' + transRight + ')';
}, 9000);
};
shootingStar();
}
【问题讨论】:
-
您可能也喜欢这个网站来解决类似的问题:codereview.stackexchange.com
标签: javascript css-selectors nodelist