【问题标题】:How can I change id in string如何更改字符串中的 id
【发布时间】:2015-01-14 13:26:02
【问题描述】:

我有这个 js 变量:

tab[1] = '<TR id="1"><TD>1</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';
tab[2] = '<TR id="2"><TD>2</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';
tab[3] = '<TR id="5"><TD>5</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';
tab[4] = '<TR id="7"><TD>7</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';

如何使用 js replace 替换每个变量中的 ID 和第一列?

结果应该是这样的:

tab[1] = '<TR id="1"><TD>1</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';
tab[2] = '<TR id="2"><TD>2</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';
tab[3] = '<TR id="3"><TD>3</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';
tab[4] = '<TR id="4"><TD>4</TD><TD>name</TD><TD >1</TD><TD>100.00</TD></TR>';

@编辑

我尝试了简单的替换:

`tab[i]=tab[i].replace('id="'+k+'"><TD>'+k+'</TD>', 'id="'+i+'"><TD>'+i+'</TD>');` 

但 id 可以是任何数字,因此并非在所有情况下都有效:/

【问题讨论】:

  • 发布你的尝试。
  • 我更新了我的帖子... ;)

标签: javascript jquery replace


【解决方案1】:

由于您已经在使用 jquery:

for (var i = 0; i < tab.length; i ++) {
  tab[i] = $(tab[i]).find("tr").first().attr("id", "id_" + i);
}

这是做什么的:

  1. 从 html 字符串创建 jquery 对象:$(tab[i])
  2. 找到第一个tr对象:.find("tr").first()
  3. 设置对象的属性“id”为“id_”+i:.attr("id", "id_" + i)

我添加了“id_”,因为ids and classes starting with a number are invalid 可能会被浏览器忽略。

这将导致您的数组包含 jquery 对象而不是字符串,但您可以像字符串一样将它们添加到您的 DOM。如果您出于某种原因需要将结果作为字符串,您只需添加 .html() 即可返回一个 html 字符串。

【讨论】:

    【解决方案2】:

    我个人认为最简单的方法是将 HTML 添加到您的文档之后。一个例子:

    table = document.getElementById('whatIsYourTablesIdBecauseIDontKnow =p');
    for (var i = 0; i < table.rows.length; i ++) {
        table.rows[i].id = i + 1;
    }
    

    更好的是,对于任何使用 ID 的代码,将其更改为以数字方式选择行;就像我在那个 for 循环中所做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多