2

我有以下情况:

  • 我必须使用动态表(添加/删除行) - 来自http://viralpatel.net/blogs/dynamically-add-remove-rows-in-html-table-using-javascript/的代码
  • 行包含带有名称的 html 输入框,没有 id
  • 我需要能够为这些框设置值

    我尝试了以下方法,但遇到了语法问题:

    <!-- html部分->这一行将被动态表代码复制-->

    <tr><td><input type=input name=mybox></td></tr>
    
    //js part - variant 1:
    document.getElementsByName("mybox").item(j).value = j;
    
    //js part - variant 2:
    document.getElementsByName("mybox")[j].setAttribute("value", j);
    

    这些似乎都不起作用。你能建议一个正确的方法吗?

    谢谢!

  • 4

    6 回答 6

    1

    getElementsByName返回一个 HTMLElement 数组。

    此行具有正确的语法,但我怀疑j,您尝试设置的值是返回数组的正确索引值。

    document.getElementsByName("mybox")[j].setAttribute("value", j);
    

    第一次出现的j应该是返回数组的索引。如果它是给定名称找到的第一个元素,则为 0,如果是第二个,则为 1,依此类推。

    于 2013-02-15T12:53:31.083 回答
    0

    document.getElementsByName("mybox")[j].value = j;

    于 2013-02-15T12:51:31.823 回答
    0

    您的 html 代码似乎错误,请尝试使用双引号:

    <tr><td><input type="input" name="mybox"></td></tr>
    
    于 2013-02-15T12:58:32.127 回答
    0

    我们不知道它的值是什么j以及它是如何设置的。

    第一个变体应该可以工作。只需设置一个有意义的值。出于测试目的:document.getElementsByName("mybox")[3].value = "Test";

    也使用引号作为属性type="input"name="mybox"

    于 2013-02-15T13:00:04.687 回答
    0

    试试这个 $("#mybox").eq(j).val("your value");

    于 2013-02-15T13:34:48.680 回答
    0

    感谢您的反馈。

    Michal 的解决方案是我得到的解决方案。

    document.getElementsByName("mybox")[3].value = "Test";
    

    ==========================================

    但是,我按照 Marcell Fülöp 的建议以非常基本的方式尝试了我的第二个变体,并看到了一些奇怪的行为:

    //manual assignment of indexes
    document.getElementsByName("mybox")[0].setAttribute("value",0);
    document.getElementsByName("mybox")[1].setAttribute("value",1);
    document.getElementsByName("mybox")[2].setAttribute("value",2);
    

    奇怪的结果是只有第一个盒子得到了它的价值。我很乐意理解为什么...

    于 2013-02-15T23:20:13.077 回答