document.getElementById(元素).innerText = 变量

document.getElementById(element).innerText = variable

我正在尝试编写一个循环来改进我为网页上的 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”。

谁能告诉我哪里做错了。

你能把分数存储在数组中吗?像这样 -

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];
}
Score = ('Game201516Score' + i)

是字符串,不是变量。因此,您将那个字符串而不是变量分配给 html。您需要先将字符串转换为变量才能使用它。 如果它是一个全局变量,那么 window[Score] 应该会给你正确的答案,而不是只使用分数。否则你也可以使用 this[Score].

eval:将行 Score = ('Game201516Score' + i); 更改为 Score = eval('Game201516Score' + i);

window:如果 eval 不适合您,请尝试上面的行 Score = window["Game201516Score" + i];;

希望一切顺利!

你应该做的第一件事是把你的变量明确地放在某个地方 - 通过使用 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;
}