"写"在使用JS和JS范围的HTML页面内部

时间:2016-10-07 11:23:28

标签: javascript html arrays

我正在开发一个基本上只接收用户输入两次的程序(风险载体和总和,但这只是一个占位符,使我的程序不那么抽象),将这两个值组合在一起然后循环重复内容。请参阅下面的代码。

<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()函数作为参数?

谢谢大家!!!

1 个答案:

答案 0 :(得分:1)

您当前代码的问题在于您将每个循环中的最后一个值替换为html。您正在使用=而不是+=。因此,快速修复将取代:

document.getElementById("test").innerHTML = x; 

由:

document.getElementById("test").innerHTML += x;

如何在HTMLElements中包装字符串数组并将它们添加到文档中的示例(请注意,还有许多其他方法/库可以实现相同的结果):

&#13;
&#13;
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;
&#13;
&#13;