-1

我想在表达式中使用变量以在添加更多时自动递增 id。但是当我在表达式中添加变量时它不起作用,当我在表达式中静态输入字符串“_1”时它起作用了
这是代码

$(document).ready(function() {

    var row_number_current  = 1;
    var row_number_increment = Number(row_number_current);
    row_number_increment += 1;

    var addMore = '<div id="data_box_1"><label for="chart-pie-text_1">Chart Text</label></div>';

    var row1 = addMore.replace("/_"+row_number_current+"/g", '_'+row_number_increment);
    var row2 = addMore.replace(/_1/g, '_'+row_number_increment);

    alert(row1);
    alert(row2);
});

row1 的结果是

<div id="data_box_1"><label for="chart-pie-text_1">Chart Text</label></div>

第 2 行结果是

<div id="data_box_2"><label for="chart-pie-text_2">Chart Text</label></div>
4

2 回答 2

1

为了在正则表达式中使用变量,您必须创建新RegExp对象并将表达式作为第一个字符串参数传递:

var regex = new RegExp("_" + row_number_current, "g");
row1 = addMore.replace(regex, "_" + row_number_increment);
于 2012-11-20T11:00:32.307 回答
1

"/_"+row_number_current+"/g"是一个字符串,而不是一个正则表达式。您需要使用此字符串构造一个正则表达式,然后将作为pattern替换中的参数传递:

var regex1 = new RegeExp("_"+row_number_current,"g");
var row1 = addMore.replace(regex1, '_'+row_number_increment);

但是,在您的特定情况下,您实际上并不需要正则表达式。只需使用一个字符串:

var row1 = addMore.replace(row_number_current, row_number_increment, "g");
于 2012-11-20T11:01:05.047 回答