将id分配给只有name属性的Input元素

时间:2017-08-02 15:38:48

标签: javascript arrays

我有一组表行,每行都有仅使用name []属性定义的输入元素,

<tr id="1">
<td><input name="billdate[]" required="required" class="form-control" placeholder="DD/MM/YYYY"></td>
<td><input class="form-control" name="amt[]" required="required"  value="0" type="text"></td>
<td><input name="gst[]" class="form-control" value="0" required="required"  type="text"></td>
<td><input name="netamt[]" class="form-control" required="required" value="0"  type="text"></td>
<td><input name="glcode[]" class="form-control" required="required" value=""  type="text"></td>
</tr> 

我已经添加了JavaScript代码来克隆表行,代码编写如下

var row = document.getElementById("1"); // find row to copy
      var table = document.getElementById("asd"); // find table to append to
      var clone = row.cloneNode(true); // copy children too
      clone.id = document.getElementById("setid").value; // change id or other attributes/contents
      table.appendChild(clone);

克隆工作正常,但问题是我想为每个输入元素分配唯一的ID。有没有简单的方法来做到这一点?我尝试了几种方法来添加,但没有成功。

2 个答案:

答案 0 :(得分:0)

function guid() {
  function s4() {
    return Math.floor((1 + Math.random()) * 0x10000)
      .toString(16)
      .substring(1);
  }
  return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
    s4() + '-' + s4() + s4() + s4();
}

clone.id = guid()

它不是真正的指导,但它应该可以正常工作。

Create GUID / UUID in JavaScript?

答案 1 :(得分:0)

不确定这是否是您要找的。 但循环遍历子节点并获取输入元素然后分配ID似乎可以解决问题。

var row = document.getElementById("1"); // find row to copy
var table = document.getElementById("asd"); // find table to append to
var clone = row.cloneNode(true); // copy children too
clone.id = 'blue';//document.getElementById("setid").value;'' // change id or other attributes/contents
var children = clone.children
for( var t = 0 ; t < children.length; t++ ){
      children[t].children[0].id = 'id-'+t;
 }
//Debugging
  console.dir( clone );
  table.appendChild(clone);