0

我有一些输入如下:

<input type="hidden" id="selected_id-1" name="e_id[]" />
<input type="hidden" id="selected_id-2" name="e_id[]" />
<input type="hidden" id="selected_id-3" name="e_id[]" />
<input type="hidden" id="selected_id-4" name="e_id[]" />

我也有用于删除该输入的每个输入的按钮。

但是,当我删除例如"selected_id-2"输入时,我想更新下一个输入的 id。所以"selected_id-3"会变成"selected_id-2""selected_id-4"- "selected_id-3"

我怎样才能更新那些ID?需要纯 JavaScript,不需要框架。

4

6 回答 6

1

你想要这样的东西吗?

var els = document.getElementsByTagName('input');
for (var i=0; i<els.length; i++) {
    els[i].id = 'selected_id-'+i;
}

如果你想要更精确的东西,即使没有 jQuery(但使用不太旧的浏览器),你可以这样做:

var els = document.querySelectorAll('input[name="e_id[]"]');
于 2012-09-07T10:52:47.930 回答
1

您可以将所有<input>元素放入一个数组中。你遍历那个数组,然后当你达到你想要的数字时,你'select_id-'+(i)'select_id-'+(i-1).

以下是如何获取所有<input>元素的数组:

var myControls = document.getElementsByTagName('input');

然后你通过一个for(概念代码):

for (var i = 1; i < [length of myControls]; i++) { 
    if (this_id's_number < i) {
        continue;
    } else if (this_id's_number == i) {
        remove this input
    } else {
        current_number = getCurrentNumberFromID();

        current input's id = current_number -1;
    }
}
于 2012-09-07T10:54:05.260 回答
1

根据您的标记,可能有更好的方法来获取所有输入,例如,在给定容器中查找所有输入,但缺少此类信息,您仍然可以执行以下操作:

function updateIds() {

   var count = 0;

   var inputs = document.getElementsByTagName('input');
   for(var i = 0; l = inputs.length; i < l; i++) {
      if(inputs[i].name == 'e_id[]') {

         inputs[i].id = 'selected_id-' + (++count);

      }
   }

}
于 2012-09-07T10:54:55.897 回答
0

您可以在 JavaScript 中使用名为setAttribute().

JavaScript方式:

var elem = document.getElementById("selected_id-2"); 
elem.setAttribute("id", "selected_id-3");
elem.id = "selected_id-3";

jQuery方式:

$("#selected_id-2").attr("id", "selected_id-3");
于 2012-09-07T10:53:33.810 回答
-1

您可以使用一些 DOM 体操,例如

document.getElementById("elementId").id.value="newId"   
于 2012-09-07T10:52:09.677 回答
-1
$("#selected_id-" + number_to_change).attr('id',"selected_id-"+(number_to_change-1));
于 2012-09-07T10:53:34.587 回答