document.getElementById(element).innerText = variable

时间:2015-10-27 10:09:32

标签: javascript dom for-loop getelementbyid innertext

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

有人能告诉我我做错了什么。

4 个答案:

答案 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;
}
相关问题