gpt4 book ai didi

Javascript 提前退出循环

转载 作者:行者123 更新时间:2023-11-29 22:24:56 24 4
gpt4 key购买 nike

我有一个用于我正在制作的抛硬币程序的循环。问题是它似乎提早退出。看一看。

$(function() {
$('#rollDice').click(function() {

var e = document.getElementById("diceSides");
var diceSides = e.options[e.selectedIndex].text;
var diceRolls = document.getElementById('rollCount').value;

if (diceRolls.match(/^[\d]*$/ )) {
if (diceRolls == "") {
alert ("Please fill out all forms then try again.");

} else {

$('#diceRollContainer').slideDown('slow');

for (i=0;i<diceRolls;i++) {
var randNum = Math.floor(Math.random()*diceSides)+1;
var rolls = ("You rolled a " + diceSides + " sided die " + diceRolls + " times, and got the numbers ");

rollMinOne = rolls - 1;
if (i == rollMinOne) {
var rolls = (rolls + randNum + ".");
}
var rolls = (rolls + randNum + ", ");

}
alert (rolls);
}
} else {
alert ("Make sure you only enter numbers and no spaces, then try again.");
}
});
});

问题是程序在 for 循环似乎完成之前就开始提醒 rolls。为什么要这样做?

最佳答案

您的代码中有几个错误,但解释您所看到的行为的一个错误是您每次通过循环将 rolls 的值重置为初始字符串。

一旦你移开那条线,你就会得到更接近的值,但你也会从 rolls 而不是 diceRolls 计算 rollsMinOne,如您所愿(这就是为什么选择好名字如此重要),这意味着 if 语句永远不会为真(因为字符串减去数字是值 NaN “Not a Number”,它不等于任何东西 [甚至它本身!])。

那么唯一的功能性(而不是样式或设计)问题是,即使您已经添加了一个句点,您仍然会在末尾附加一个带有逗号的值。

综合起来:

    var rolls = ("You rolled a " + diceSides + " sided die " + diceRolls + " times, and got the numbers ");
for (i=0;i<diceRolls;i++) {
var randNum = Math.floor(Math.random()*diceSides)+1;

rollMinOne = diceRolls - 1;
if (i == rollMinOne) {
rolls = (rolls + randNum + ".");
} else {
rolls = (rolls + randNum + ", ");
}

虽然正如其他答案所提到的,有更简单、更快捷的方法来获得相同的结果,但我认为理解为什么代码不起作用很重要。

关于Javascript 提前退出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com