【问题标题】:Javascript For Loop On Array of Input fields issue with document.getElementByIdJavascript For Loop On Array of Input fields 问题与 document.getElementById
【发布时间】:2026-01-22 02:00:01
【问题描述】:

我有一个服务器端脚本为我制作了大量的文本字段。当我希望用户填写并提交数据时。我知道有多少字段,因为服务器也会发送计数。

然后我试图将它们连接成一个长字符串,中间有一个间隔。但我无法获取数组的值。

用代码更好地解释。

这行得通

        <script>
function Submit() {
    var spacer = ":";
    var mycount = document.getElementById('counter').value;
    var usertext = '';
    var x=0;
    for(x = 0; x **<= 2**; x++){
        usertext = usertext + document.getElementById('description[' + x + ']').value + spacer ;
    }
</script>

这不起作用。

    <script>
function Submit() {
    var spacer = ":";
    var mycount = document.getElementById('counter').value;
    var usertext = '';
    var x=0;
    for(x = 0; x **<= mycount**; x++){
        usertext = usertext + document.getElementById('description[' + x + ']').value + spacer ;
    }
</script>

这是我的身体

    <textarea   id='counter' name='counter'>2</textarea>
<textarea   id='description[0]' name=''description'>zero</textarea>
<textarea   id='description[1]' name=''description'>one</textarea>
<textarea   id='description[2]' name=''description'>two</textarea>
<button type="button" onclick="Submit()" >Save</button>

这是 Firebug 给我的错误:

document.getElementById("描述[" + x + "]") 为空

有人知道怎么做吗?

谢谢

【问题讨论】:

  • 请注意它是否与问题相关,但您对此处的引号有疑问:name=''description'。注意“描述”之前的双单引号。
  • d'oh.. 已修复,但对我的问题没有帮助。

标签: javascript arrays getelementbyid


【解决方案1】:

尽管您的 HTML 无效(例如不平衡的引号),但我还是 works fine。更好的问题是这样做的目的是什么。为什么不按原样提交表单?

【讨论】:

  • JS Fiddle 是一个很酷的工具,不知道它的存在。它也适用于该工具,但在本地复制相同的代码,我无法让它在 IE、FF 或 Chrome 中工作。为什么,因为我实际上必须为旧版应用程序输出它。
  • @greg,我们需要SSCCE 才能提供帮助。发布一个显示问题的简单完整页面。
  • 哇,所以在制作 SSCCE 的过程中,我以某种方式修复了它。但不知道怎么做。如果我解决它,我会发布。诡异的。谢谢大佬
【解决方案2】:

在将mycount 应用于for 循环之前,将mycount 的整数值与parseInt 取为:

var mycount = document.getElementById('counter').value;
mycount = parseInt(mycount);

【讨论】: