0

这是我正在做的非常简单的事情的一个片段(不幸的是,我在 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

4 回答 4

0

你需要做这样的事情:

text = document.getElementById("form.feature_" + count).value;
于 2012-07-10T21:34:53.523 回答
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++;
    }
于 2012-07-10T21:36:26.983 回答
0

试试这个

var feature_text = document.getElementById("feature_" + count).value;
于 2012-07-10T21:36:47.253 回答
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/

于 2012-07-10T21:39:22.030 回答