Javascript"document.write"混乱
Javascript "document.write" confusion
我是 JavaScript 的新手,可能问了一个愚蠢的问题。但是从下面的代码返回的结果让我很困惑。我不确定为什么只有第一句显示 i 的值并且它在最后一个数字 3.
我在执行代码document.write('<h1>' + i + msg + '<h1>')
的时候也很疑惑,为什么它不直接写入变量'msg'的聚合值呢? msg 的值没有被清除,它应该包含传递给它的第一个和第二个值,不是吗?这让我有点困惑,因为我掌握了一些 python 知识,但它的工作方式不同。
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var arrayLength = scores.length;
var roundNumber = 0;
var msg = '';
var i;
for (i = 0; i < arrayLength; i++) {
roundNumber = i + 1;
msg += ' Round ' + roundNumber + ': ';
msg += scores[i] + '<br>';
}
document.write('<h1>' + i + msg + '<h1>')
从 html 返回的结果:
3 Round 1: 24
Round 2: 32
Round 3: 47
我的预期结果:
0 Round 1: 24
1 Round 2: 32
2 Round 3: 47
你只输出了一次i
。这就是为什么您只看到最后一个值的原因。
您需要将其添加到循环内的 msg
。
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var arrayLength = scores.length;
var roundNumber = 0;
var msg = '';
var i;
for (i = 0; i < arrayLength; i++) {
roundNumber = i + 1;
msg += i + ' Round ' + roundNumber + ': ';
msg += scores[i] + '<br>';
}
document.write('<h1>' + msg + '<h1>')
你只需要将 i 添加到循环中的消息而不是之后,例如:
var scores = [24, 32, 47];
var arrayLength = scores.length;
var roundNumber = 0;
var msg = '';
var i;
for (i = 0; i < arrayLength; i++) {
roundNumber = i + 1;
msg += i +' Round ' + roundNumber + ': ';
msg += scores[i] + '<br>';
}
document.write('<h1>' + msg + '<h1>')
document.write
循环结束后运行。
它确实输出msg
的所有聚合内容。那不是问题。
出错的地方是 i
的使用 - 在循环结束后,您只能在输出中使用它一次。因此,您看到的只有循环结束时的最终值,因此它显示 3
,并且只显示一次。
与每次循环运行时添加的 msg
不同(因为 +=
将新内容附加到现有变量),i
的值被新的覆盖每次循环运行时的值(这就是 for
语法中的 i++
所做的)。
要让它做你想做的事,你只需要在进行时将 i
值合并到 msg
中。
var scores = [24, 32, 47];
var msg = '';
for (let i = 0; i < scores.length; i++) {
msg += i + ' Round ' + (i+1) + ': ' + scores[i] + '<br>';
}
document.write('<h1>' + msg + '<h1>')
P.S。我还稍微简化了代码——不清楚为什么你用相同的值声明同一个 scores
数组 3 次,并且 arrayLength
和 roundNumber
不需要作为单独的变量存在,并且当然不是那些在循环之外有作用域的。 i
也不再需要循环外的范围。
我是 JavaScript 的新手,可能问了一个愚蠢的问题。但是从下面的代码返回的结果让我很困惑。我不确定为什么只有第一句显示 i 的值并且它在最后一个数字 3.
我在执行代码document.write('<h1>' + i + msg + '<h1>')
的时候也很疑惑,为什么它不直接写入变量'msg'的聚合值呢? msg 的值没有被清除,它应该包含传递给它的第一个和第二个值,不是吗?这让我有点困惑,因为我掌握了一些 python 知识,但它的工作方式不同。
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var arrayLength = scores.length;
var roundNumber = 0;
var msg = '';
var i;
for (i = 0; i < arrayLength; i++) {
roundNumber = i + 1;
msg += ' Round ' + roundNumber + ': ';
msg += scores[i] + '<br>';
}
document.write('<h1>' + i + msg + '<h1>')
从 html 返回的结果:
3 Round 1: 24
Round 2: 32
Round 3: 47
我的预期结果:
0 Round 1: 24
1 Round 2: 32
2 Round 3: 47
你只输出了一次i
。这就是为什么您只看到最后一个值的原因。
您需要将其添加到循环内的 msg
。
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var scores = [24, 32, 47];
var arrayLength = scores.length;
var roundNumber = 0;
var msg = '';
var i;
for (i = 0; i < arrayLength; i++) {
roundNumber = i + 1;
msg += i + ' Round ' + roundNumber + ': ';
msg += scores[i] + '<br>';
}
document.write('<h1>' + msg + '<h1>')
你只需要将 i 添加到循环中的消息而不是之后,例如:
var scores = [24, 32, 47];
var arrayLength = scores.length;
var roundNumber = 0;
var msg = '';
var i;
for (i = 0; i < arrayLength; i++) {
roundNumber = i + 1;
msg += i +' Round ' + roundNumber + ': ';
msg += scores[i] + '<br>';
}
document.write('<h1>' + msg + '<h1>')
document.write
循环结束后运行。
它确实输出msg
的所有聚合内容。那不是问题。
出错的地方是 i
的使用 - 在循环结束后,您只能在输出中使用它一次。因此,您看到的只有循环结束时的最终值,因此它显示 3
,并且只显示一次。
与每次循环运行时添加的 msg
不同(因为 +=
将新内容附加到现有变量),i
的值被新的覆盖每次循环运行时的值(这就是 for
语法中的 i++
所做的)。
要让它做你想做的事,你只需要在进行时将 i
值合并到 msg
中。
var scores = [24, 32, 47];
var msg = '';
for (let i = 0; i < scores.length; i++) {
msg += i + ' Round ' + (i+1) + ': ' + scores[i] + '<br>';
}
document.write('<h1>' + msg + '<h1>')
P.S。我还稍微简化了代码——不清楚为什么你用相同的值声明同一个 scores
数组 3 次,并且 arrayLength
和 roundNumber
不需要作为单独的变量存在,并且当然不是那些在循环之外有作用域的。 i
也不再需要循环外的范围。