将值设置为getElementsByName数组

时间:2013-02-15 12:46:46

标签: javascript dynamic getelementsbyname

我遇到以下情况:

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

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

    <! - html part - >此行将由动态表格代码复制 - >

    <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);
    

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

    谢谢!

  • 6 个答案:

    答案 0 :(得分:1)

    getElementsByName返回一个HTMLElements数组。

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

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

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

    答案 1 :(得分:0)

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

    答案 2 :(得分:0)

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

    <tr><td><input type="input" name="mybox"></td></tr>
    

    答案 3 :(得分:0)

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

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

    还要为属性type="input"name="mybox"

    使用引号

    答案 4 :(得分:0)

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

    答案 5 :(得分:0)

    感谢您的反馈。

    Michal的解决方案是我工作的解决方案。

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

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

    然而,我按照MarcellFü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);
    

    奇怪的结果只是第一个盒子得到了它的价值。我很高兴明白为什么......