如何将这些数组值全部打印成html表单?

时间:2013-06-03 19:25:33

标签: javascript html arrays operators

我有一小段代码生成一个基于三角形的值的数组。我将在下面发布数组。

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等等?

3 个答案:

答案 0 :(得分:2)

您不断更换值

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++;
}

希望这对你有所帮助。在您的示例中,在循环中,您将最新值设置为相同的元素,从而覆盖以前的任何值。