我有一小段代码生成一个基于三角形的值的数组。我将在下面发布数组。
var endwallPanelLengths = [totalHeightInches];
var i = 0;
while (endwallPanelLengths[i] > eaveInches)
{
endwallPanelLengths.push(endwallPanelLengths[i] - peakHeightDecrease);
document.getElementById("test83").value="4 - " + endwallPanelLengths[i];
i++;
}
此数组将包含2到100个索引。我希望代码将所有由分隔符分隔的值写入<textarea>
,其id =“test83”。
如果我按照上面设置的那样运行代码,它只会在array [1]而不是[0]或其他任何一个中写入值。我怎么能让它写下所有这些,以便它们看起来像这样......
4 - 140这是数组位置[0]
的值4 - 126
4 - 116等等?
答案 0 :(得分:2)
您不断更换值 p>
document.getElementById("test83").value="4 - " + endwallPanelLengths[i];
您需要附加值
document.getElementById("test83").value += "4 - " + endwallPanelLengths[i] + "\n";
更好的是,建立值并设置一次值
var endwallPanelLengths = [totalHeightInches],
i = 0,
output = [];
while (endwallPanelLengths[i] > eaveInches)
{
endwallPanelLengths.push(endwallPanelLengths[i] - peakHeightDecrease);
output.push("4 - " + endwallPanelLengths[i]);
i++;
}
document.getElementById("test83").value = output.join("\n");
答案 1 :(得分:1)
如果我正确理解你,你希望数组在textarea
中每行显示一个项目,那么你应该能够完全抛弃你的循环,并且只需一次性完成。< / p>
document.getElementById("test83").value = endwallPanelLengths.join('\n');
虽然看起来你也在为每个值增加'4 - '。如果是这种情况,那么你可以添加一个额外的步骤来添加这些四肢:
var arr = endwallPanelLengths.map(function(item){ return '4 - ' + item; });
document.getElementById("test83").value = arr.join('\n');
如果您需要支持IE8,请确保从here获取Array.prototype.map
的垫片
答案 2 :(得分:0)
HTML:
<div id="holder"></div>
JavaScript的:
var endwallPanelLengths = [totalHeightInches];
var i = 0;
var holder = document.getElementById("holder");
while (endwallPanelLengths[i] > eaveInches)
{
endwallPanelLengths.push(endwallPanelLengths[i] - peakHeightDecrease);
var e = document.createElement('div');
e.innerHTML = "4 - " + endwallPanelLengths[i] + "<br />";
holder.appendChild(e.firstChild);
i++;
}
希望这对你有所帮助。在您的示例中,在循环中,您将最新值设置为相同的元素,从而覆盖以前的任何值。