使用jquery替换数组中的奇怪行为或“如何替换字符串的片段?”

时间:2016-06-23 12:30:56

标签: javascript jquery arrays string replace

我必须将表单中的id值更改为所有输入和选择字段。

$(value).find('input, select').each(function() {
    var id = $(this).attr('id');
    var idArray = id.split("_");
    var newId = id.replace(idArray[5], 2);
        newId = id.replace(idArray[7], (index + 1));
    console.log(newId);
    $(this).attr('id', newId);
});

值是表格。控制台返回idArray [5]替换为(index +1)...

任何想法,谢谢

1 个答案:

答案 0 :(得分:0)

因此,您致电String.prototype.replace,因为id实际上是string。 作为第二个参数,您传递的是int

var newId = id.replace(idArray[5], 2);

这将用数字2替换该字符串中的任何内容,而不是数组的第二个索引。

修改

用数字替换部件是预期的行为,这是实际发生的事情:

替换等于idArray[5]的{​​{1}}正在用1替换它找到的第一个1字符。

另一个替换是使用相同的原始字符串(2而非id)并将相同的newId字符替换为1的值。

在这种情况下的解决方案是操纵数组,然后join将其重新转换为字符串:

(index + 1)