将值设置为getElementsByName的数组



我遇到以下情况:

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

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

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

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

    谢谢!

  • getElementsByName返回一个HTML元素数组。

    这一行的语法正确,但我怀疑j,您试图设置的值是返回数组的正确索引值。

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

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

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

    你的html代码似乎错了,试着放双引号:

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

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

    第一种变体应该有效。只要设定一个合理的值。用于测试:document.getElementsByName("mybox")[3].value = "Test";

    还对属性type="input"name="mybox" 使用引号

    尝试此$("#mybox").eq(j).val("your value");

    感谢您的反馈。

    Michal的解决方案就是我正在研究的。

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

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

    然而,我以一种非常初级的方式尝试了Marcel 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);
    

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

    最新更新