【问题标题】:Javascript increment number between square brackets方括号之间的Javascript递增数字
【发布时间】:2012-08-16 09:29:53
【问题描述】:

这是我的文本输入框

<input class="tb" id="tb43[0]" type="text" size="30" maxlength="200" />

使用 jQuery 进行克隆时,我希望新克隆框的 id 为 "tb43[1]"

$clone.find(".tb").attr("id").replace(/\d+/, function (val) { return parseInt(val) + 1; });

这只会增加第一个数字,但我怎样才能增加方括号中的数字?

谢谢

【问题讨论】:

  • 如果您要发布到 php 脚本,通常使用 [] 就足够了,它会在内部递增。
  • 如果您必须做这样的事情,最好重新考虑架构并尝试不同的方法。

标签: javascript jquery regex increment


【解决方案1】:
  1. 您可以使用.attr("id", function() {}) 更改ID。您目前没有更改 ID。
  2. 您可以将正则表达式更改为仅在方括号中匹配。
  3. 您可以使用+ 代替parseInt(后者有一些注意事项)。

例如

$clone.find(".tb").attr("id", function(i, id) {
  return id.replace(/\[(\d+)\]/, function(match, number) {
    // `number` refers to the first group (denoted with ())
    return "[" + (+number + 1) + "]";
  })
});

【讨论】:

  • 帮助很大。我在一个单独的函数中稍微修改了您的解决方案: function incrementBracketValue(str) { var incrementedValue = parseInt(str.match(/[(\d+)]/)[1])+1; return str.replace(/[(\d+)]/, "["+incrementedValue+"]") }
  • @dalars27,您可能希望通过单击答案左侧投票控件下方的绿色勾号来接受 pimvdb 的正确答案。
  • @dalars27:请使用+ 而不是parseInt,否则会得到奇怪的结果(parseInt("080") === 0)。你需要转义方括号。
  • @pimvdb 在您的建议下再次处理我的代码,谢谢 - 我今天学到了很多
  • @pimvdb 很棒。搜遍网络找到这个解决方案。帮助我通过多数组发布添加转发器字段。