javascript 在这种情况下,如何防止出现“无法重新声明块范围内的变量”?

mbskvtky  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(227)

所以我想在我的网站上改变背景。我现在在我的第二页,想做一个不同的背景颜色。我从我的第一页复制了javascript(因为它工作得很好),只是想改变querySelectors。但是红色的波浪弹了出来。我不能改变[red,绿色,blue]。或者我可以,但是不知道怎么做。我怎么能改变const [red,green,蓝色]所以它像以前一样工作?
下面是我的VSCode中的一张图片:enter image description here
这是你的工作背景。

const [red, green, blue] = [255, 255, 255];
const background1 = document.querySelector('.background1');
window.addEventListener('scroll', () => {
  const y = 1 + (window.scrollY || window.pageYOffset) / 250
  const [r, g, b] = [red/y, green/y, blue/y].map(Math.round)
  background1.style.backgroundColor = `rgb(${r}, ${g}, ${b})`
});
.background1 {
        background-color: rgb(255,255,255);
        height: 7000px;
    }
<p>scroll</p>
<div class="background1"></div>
cvxl0en2

cvxl0en21#

你可以尝试这样做:

const scrollListener74903087 = ( color, selector, offset ) => {
    const [red, green, blue] = color;
    const background = document.querySelector(selector);
    window.addEventListener('scroll', () => {
        const y = 1 + (window.scrollY || window.pageYOffset) / offset
        const [r, g, b] = [red/y, green/y, blue/y].map(Math.round)
        background.style.backgroundColor = `rgb(${r}, ${g}, ${b})`
    });
}

scrollListener74903087([255, 255, 255], '.background1', 250);
scrollListener74903087([0, 208, 255], '.background2', 500);
yvgpqqbh

yvgpqqbh2#

尝试使用关键字var而不是const

var red, green, blue;

[red, green, blue] = [255, 255, 255];
// your first background codes

[...]

[red, green, blue] = [0, 208, 255];
// your second background codes

相关问题