我正在开发一个基本上只接收用户输入两次的程序(风险载体和总和,但这只是一个占位符,使我的程序不那么抽象),将这两个值组合在一起然后循环重复内容。请参阅下面的代码。
<head>
<script type="text/javascript">
function fillArray(){
document.getElementById("danke").innerHTML = "Thanks for specifying the amount of entries.";
var numberOfEntries = parseInt(document.getElementById('input0').value);
var i = 0;
var myArrA = [];
var myArrB = [];
var x = " ";
while(i<numberOfEntries){
var neuRT = prompt("Enter a risk carrier");
myArrA.push(neuRT);
var neuRH = prompt("Enter a risk sum");
myArrB.push(neuRH);
i++;
}
for(i = 0; i<anzahlEintraege; i++){
x = myArrA[i] + " carries a risk of " + myArrB[i];
document.getElementById("test").innerHTML = x;
}
}
</script>
</head>
<body>
<h1>risk assessment</h1>
<input type="text" id="input0" />
<button type="button" onclick="fillArray()">Number of entries</button> <p id="danke"></p>
<button type="button" onclick="untilNow()">Show all entries so far</button>
<br />
<br />
<div id="test"></div>
</body>
</html>
我的问题是:
1。)我想通过写入一个HTML元素来显示数组,我在for循环中尝试了这个元素。弹出窗口应该避免。如何循环遍历HTML元素,如demo1,demo2,demo3等?我不能写<p id="demo" + i></p>
。还有哪些其他选择?
2。)假设我想使用untilNow()函数。我的数组的范围仅限于fillArray()。我是否需要&#34;返回&#34;数组到untilNow()函数作为参数?
谢谢大家!!!
答案 0 :(得分:1)
您当前代码的问题在于您将每个循环中的最后一个值替换为html。您正在使用=
而不是+=
。因此,快速修复将取代:
document.getElementById("test").innerHTML = x;
由:
document.getElementById("test").innerHTML += x;
如何在HTMLElements中包装字符串数组并将它们添加到文档中的示例(请注意,还有许多其他方法/库可以实现相同的结果):
var myStrings = ["Hello", "stack", "overflow"];
// Two performance rules:
// 1. Use a fragment to prevent multiple updates to the DOM
// 2. No DOM queries in the loop
var newContent = myStrings.reduce(function(result, str) {
var li = document.createElement("li");
var txt = document.createTextNode(str);
li.appendChild(txt);
result.appendChild(li);
return result;
}, document.createDocumentFragment());
// Actually add the new content
document.querySelector("ul").appendChild(newContent);
&#13;
<ul class="js-list"></ul>
&#13;