0

我有一个与我在这里提出的问题有关的问题

我正在尝试嵌套一个循环,但不太确定这是否是要走的路。我想要做的是显示一些与分数相关的星星。所以,如果他们得到 3 个问题,他们就会得到 3 颗星。如果它们没有达到所需的分数,我遇到的问题是显示空星。

EG:需要 10 才能进入下一个级别。他们得分 6。我可以显示 6 颗金星,但我无法显示 4 颗空星。我希望我解释得对。

这是我到目前为止的代码

var se = '';
var sep = '';
for (var i = 1; i <= score; i++)
{
    se = se + '<img src="./images/star.png"/>'; 
}

我也有这个循环来尝试显示空星星

for (var j = 1; j <= i; j++)
{
    sep = sep + '<img src="./images/emptystar.png"/>';
}

我不确定这是否需要进入已经存在的 for 循环内部或超出它。此外,由于某种原因,它没有显示正确数量的空星。0 正确答案显示 1 为空,其他任何内容显示 3 或 4

我认为我在第二个循环中进行了正确的计算。任何我出错的地方都将不胜感激。正如我所说,第一个循环可以正常工作。

谢谢大家

4

3 回答 3

3

试试这个:

var stars = '';
for (var i = 1; i <= 10; i++) {                        // Loop 10 times
    var empty = (i > score)?'empty':'';                // If i > score, set this variable to the string 'empty';
    stars += '<img src="./images/'+ empty +'star.png"/>'; // Add the image (star.png or emptystar.png depending on the score).
}

这样做的好处是您只需要 1 个循环,这意味着您不会复制任何代码。

对于score == 6,这将返回:

<img src="./images/star.png"/>
<img src="./images/star.png"/>
<img src="./images/star.png"/>
<img src="./images/star.png"/>
<img src="./images/star.png"/>
<img src="./images/star.png"/>
<img src="./images/emptystar.png"/>
<img src="./images/emptystar.png"/>
<img src="./images/emptystar.png"/>
<img src="./images/emptystar.png"/>

那么,var empty = (i > score)?'empty':'';你在问,这条线是如何工作的?
很简单,它是一个三元运算符。简写:

var empty;
if(i > score){
    empty = 'empty';
}else{
    empty = '';
}
于 2013-02-08T15:18:35.830 回答
2

试试这个:

var stars = '';
var maxstars = 10;

for (var i = 0; i < score; i++)
{
    stars = stars + '<img src="./images/star.png"/>'; 
}

for (var j = score; j < maxstars; j++)
{
    stars = stars + '<img src="./images/emptystar.png"/>';
}
于 2013-02-08T15:18:43.683 回答
0

只需使用一个循环:

var score = 5;
var sep = "";
for (var i = 0; i <= 10; i++)
{
    sep += (i < score) ? '<img src="./images/star.png"/>' : '<img src="./images/emptystar.png"/>';
}

我没有测试,但这应该让你开始。

于 2013-02-08T15:20:14.350 回答