javascript - 动态变量名称 Javascript

标签 javascript html variables dynamic

我一直听说我应该如何使用数组和对象来实现动态变量名。我不确定如何让它与我当前的项目一起使用。

我需要html 框的动态变量名称,以及输入分数的动态名称。我如何使用当前代码完成此操作?

下面是每个玩家的 5 个单独分数中的每一个的 Javascript 提示。

var hole1 = prompt("Enter Hole 1 score:");
var hole2 = prompt("Enter Hole 2 score:");
var hole3 = prompt("Enter Hole 3 score:");
var hole4 = prompt("Enter Hole 4 score:");
var hole5 = prompt("Enter Hole 5 score:");

下面是声明一个变量来存储所有 6 个框,它将保存分数和总分数。

var makeScoreBoxes ='<input type ="text" placeholder="Hole 1" id="hole1" /> <input type ="text" placeholder="Hole 2" id="hole2" /> <input type ="text" placeholder="Hole 3" id="hole3" /> <input type ="text" placeholder="Hole 4" id="hole4" /> <input type ="text" placeholder="Hole 5" id="hole5" /> <input type ="text" placeholder="Total Score" id="totalScore" />'
newdiv.innerHTML = makeScoreBoxes;
ni.appendChild(newdiv); 

然后将它们全部加起来并将总数存储在 totalScore 变量中:

totalScore = parseInt(parseFloat(hole1) +
             parseFloat(hole2) +
             parseFloat(hole3) +
             parseFloat(hole4) +
             parseFloat(hole5));

然后它将 hole1、hole2、hole3、hole4 和 hole5 以及它们的总和放入我的 index.html 输入框中,如下所示:

addTotal = document.getElementById('totalScore').value=totalScore;
addhole1 = document.getElementById('hole1').value=hole1;
addhole2 = document.getElementById('hole2').value=hole2;
addhole3 = document.getElementById('hole3').value=hole3;
addhole4 = document.getElementById('hole4').value=hole4;
addhole5 = document.getElementById('hole5').value=hole5;

hole1、hole2、hole3、hole4、hole5,所有这些都是为了提示用户,询问他们的分数是多少。然后将它们全部放入html输入框中,所有输入框都具有与变量相同的id,hole1,hole2,hole3,holr4和hole5。由于有多个人输入分数,我如何为每个 html 框 ID 和 javascript 提示变量生成/迭代动态名称,以便我可以在任意多个框中添加尽可能多的分数?

最佳答案

您可以将所有代码简化为:

var holePrompts = [];
for (var i = 0; i < 5; i++) {
    holePrompts[i] = prompt('Enter Hole ' + (i + 1) + ' score:');
}

var totalScore = 0;
for (var i = 0; i < 5; i++) {
    totalScore += parseFloat(holePrompts[i]);
}

document.getElementById('totalScore').value = parseInt(totalScore);
for (var i = 0; i < 5; i++) {    
    document.getElementById('hole' + (i + 1) ).value = holePrompts[i];
}

如果您不对分数进行任何其他操作,甚至更短:

var totalScore = 0;
for (var i = 0; i < 5; i++) {
    score = prompt('Enter Hole ' + (i + 1) + ' score:');
    document.getElementById('hole' + (i + 1) ).value = score;
    totalScore += parseFloat(score);
}
document.getElementById('totalScore').value = parseInt(totalScore);

快速旁注,因为您是 JavaScript 的新手。当您使用数组并使用 i 打印消息时。注意括号:'Enter Hole' + (i + 1) + 'score:'

如果你这样输入:'Enter Hole ' + i + 1 + 'score:' 它将输出 Enter Hole 01 score:, 输入第 11 洞得分:输入第 21 洞得分,等等。这是因为操作顺序。当数字被添加到字符串时,它被转换为字符并连接起来。

关于javascript - 动态变量名称 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966742/

相关文章:

javascript - “await”在异步函数中不起作用

javascript - 未捕获的范围错误: Maximum call stack size exceeded onload

javascript - 比较两个元素在 body 中的位置

c++ - 定义指针变量

javascript - 这是 JavaScript 中的数组还是变量?

c - C 中的奇数错误;期待某事

javascript - 将 Opus 音频数据文件解码为原始数据文件 Node JS

javascript - CORS 是否可以使用 SSL xmlhttprequest 在 IE 11 中工作

css - 在 MDL 中更改抽屉的宽度

html - 如何防止在html输入字段末尾换行?