为什么我只能通过JS更改CSS样式一次?

ghg1uchk  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(158)

刚开始学习JS。我想改变字体大小随机每次我点击按钮,但它只工作,我第一次点击。

var oBox = document.querySelector('#box');
var randomNumber = ((Math.random() * 10) * 10).toString();
var b = document.querySelector('#button');

b.addEventListener('click', function () {
    oBox.style.fontSize = randomNumber + 'px';
})
mzaanser

mzaanser1#

var randomNumber = ((Math.random() * 10) * 10).toString();行只执行一次,因此,应使用常量:const randomNumber = ((Math.random() * 10) * 10).toString();.
在你的例子中,你必须在函数中移动这一行,然后,这一行将在每次点击事件后执行:

const box = document.querySelector('#box');
const button = document.querySelector('#button');

button.addEventListener('click', function () {
    const randomNumber = ((Math.random() * 10) * 10).toString();
    box.style.fontSize = randomNumber + 'px';
});
<div id="box">Hello World</div>
<button id="button">Button</button>

你也应该给你的JavaScript变量起一个有意义的名字。对于更复杂的软件来说,仅仅b不是一个好名字。另外,看看文档中letvarconst之间的区别。

5n0oy7gb

5n0oy7gb2#

因为随机数只生成一次,所以你需要创建一个函数,在每次调用它时生成一个不同的随机数,如下所示:

var oBox = document.querySelector('#box');
var b = document.querySelector('#button');

function getRandomNumber() {
  return ((Math.random() * 10) * 10).toString();
}

b.addEventListener('click', function () {
    oBox.style.fontSize = getRandomNumber() + 'px';
})
<div id="box">
  This is a test
</div>

<button id="button">
Button
</button>

或者直接在click事件中生成,如下所示:
一个二个一个一个

相关问题