我正在尝试编写一个循环来改进我为网页上的html元素赋值的方式。
目前我使用....
document.getElementById("Season201516Score1").innerHTML = Game201516Score1;
document.getElementById("Season201516Score2").innerHTML = Game201516Score2;
document.getElementById("Season201516Score3").innerHTML = Game201516Score3;
依旧......
变量是
var Game201516Score1= "L 0-2"
var Game201516Score2= "W 1-0"
var Game201516Score3= "D 2-2"
我正在使用的循环是
for (var i = 1; i <= 3; ++i)
{
element = 'Season201516Score' + i
Score = ('Game201516Score' + i)
document.getElementById(element).innerText = Score;
}
它到目前为止工作,它将文本放在页面上的正确元素中,而不是值“L 0-2
”,“W 1-0
”或“D 2-2
”它给出了文字“Game201516Score1
”,“Game201516Score2
”和“Game201516Score3
”。
有人能告诉我我做错了什么。
答案 0 :(得分:1)
您可以将分数存储在数组中吗?像这样的东西 -
var Game201516Score = [];
Game201516Score[0]= "L 0-2"
Game201516Score[1]= "W 1-0"
Game201516Score[2]= "D 2-2"
for (var i = 0; i < 3; i++)
{
element = 'Season201516Score' + i
document.getElementById(element).innerText = Game201516Score[i];
}
答案 1 :(得分:0)
Score = ('Game201516Score' + i)
是字符串而不是变量。因此,您要将该字符串而不是变量分配给html。您需要将字符串转换为变量才能首先使用它。
如果它是全局变量,则window[Score]
应该为您提供正确的答案,而不是仅使用分数。否则,您也可以使用this[Score]
。
答案 2 :(得分:0)
eval :将行Score = ('Game201516Score' + i);
更改为Score = eval('Game201516Score' + i);
。
窗口:如果eval
不适合您,请在上面一行Score = window["Game201516Score" + i];
尝试此操作;
希望这没关系!
答案 3 :(得分:0)
你应该做的第一件事就是把你的变量放在显式位置 - 使用var
它在当前范围内,这很可能是window
但可能依赖(例如,如果这段代码实际上是在一个函数中)
window.myScores.Game201516Score1= "L 0-2"
window.myScores.Game201516Score2= "W 1-0"
window.myScores.Game201516Score3= "D 2-2"
然后您的其他代码将使用方括号表示法来访问这些变量
for (var i = 1; i <= 3; ++i)
{
element = 'Season201516Score' + i
Score = window.myScores['Game201516Score' + i];
document.getElementById(element).innerText = Score;
}