Javascript While循环与表单值

时间:2012-07-10 21:28:08

标签: javascript forms variables while-loop

这是我正在努力的一些非常简单的片段(不幸的是,我没有太多的Javascript经验)。基本上,我需要按顺序打印多个动态文本字段的值(我假设动态是正确的单词;根据需要的数量,可以添加或删除更多文本框)。它们的标签如下:

<li><input type="text" name="feature_1" id="feature_1" /></li>
<li><input type="text" name="feature_2" id="feature_2" /></li>
etc
etc

我一直在尝试从文本框中获取输入值。

amount = 4; //this is actually the total number of text boxes used
var count = 1;
while (count <= amount) {
        var feature_text = "form.feature_" + count + ".value";
        text += ("<li>" + feature_text + "</li>\n");
        count++;
    }

不幸的是,这会输出

<li>form.feature_1.value</li>
<li>form.feature_2.value</li>
<li>form.feature_3.value</li>
<li>form.feature_4.value</li>

而不是

<li>Value 1</li>
<li>Value 2</li>
<li>Value 3</li>
<li>Value 4</li>

如何让“feature_text”拉取值而不是输出字符串?

4 个答案:

答案 0 :(得分:0)

你需要做这样的事情:

text = document.getElementById("form.feature_" + count).value;

答案 1 :(得分:0)

document.getElementById("theButton")

amount = 4; //this is actually the total number of text boxes used
var count = 1;
while (count <= amount) {
        var feature_text = "form.feature_" + count;
        text += ("<li>" + document.getElementById(feature_text).value + "</li>\n");
        count++;
    }

答案 2 :(得分:0)

试试这个

var feature_text = document.getElementById("feature_" + count).value;

答案 3 :(得分:0)

您正在获取字符串而不是实际值,因为这是您当前创建的字符:

var feature_text = "form.feature_" + count + ".value";

在文本周围使用引号[“”]会创建一个字符串值,而不是引用DOM元素。

如果可能,请参考实际ID的元素:

var feature_text = document.getElementById('feature_' + count).value;

一个更完整的示例,它将代码移动到函数并使用onclick事件处理程序执行:

<强> HTML:

<ul>
    <li><input type="text" name="feature_1" id="feature_1" /></li> 
    <li><input type="text" name="feature_2" id="feature_2" /></li>
</ul>
<input type="button" value="Submit" onclick="getValues()" />

<div id="output"></div>

<强> JavaScript的:

function getValues(){     
    var amount = 2; 
    var count = 1; 
    var text = ['<ul>'];

    for(var i=1; i <= amount; i++) {
        var ele = document.getElementById("feature_" + i);
        text[i] = "<li>" + ele.value + "</li>";
    }
    text.push('</ul>');

    document.getElementById('output').innerHTML = text.join('');
}

我修改了while循环以使用for循环并切换到text变量的数组以进行更高优化。

你可以通过不将元素分配给变量来进一步压缩它,因为你只获得它的值:

text[i] = "<li>" + document.getElementById("feature_" + i).value + "</li>";

演示: http://jsfiddle.net/ACVFq/