用于替换字符串中的文本的Javascript循环

时间:2016-07-11 15:32:37

标签: javascript

我有一个函数将一个字符串返回一个名为boomerang的变量。我无法控制这个函数返回的内容,但我可以随后用一些JavaScript来回复函数返回的内容。该函数返回此字符串:

sDeleteSelected

我想在HTML中注入两个ID属性,以便在<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 > <TR> <TD> <A CLASS=ButtonItem HREF="/CRM/CustomPages/EMList/EMList.asp?SID=129805899252150&Key0=4&Key4=1&F=EMList/EMList.asp&J=EMList/EMList.asp&EMTarget=D"> <IMG SRC="/CRM/Themes/img/color/Buttons/Delete.gif" BORDER=0 ALIGN=MIDDLE> </A> </TD> <TD>&nbsp;</TD> <TD NOWRAP="TRUE" > <A CLASS=ButtonItem HREF="/CRM/CustomPages/EMList/EMList.asp?SID=129805899252150&Key0=4&Key4=1&F=EMList/EMList.asp&J=EMList/EMList.asp&EMTarget=D">Delete selected</A> </TD> </TR> </TABLE> 属性显示的位置显示CLASS=ButtonItem

CLASS=ButtonItem ID=btnDelete

但是,如果我在其上使用javascript全局替换,它会在该字符串中为两个元素提供相同的ID。我可以做的是替换,用sDeleteSelected = sDeleteSelected.replace(/CLASS=ButtonItem/g, "CLASS=ButtonItem ID=btnDelete"); 替换第一个CLASS=ButtonItem,用CLASS=ButtonItem ID=btnDelete1替换第二个。{/ p>

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

sDeleteSelected = sDeleteSelected.replace("CLASS=ButtonItem", "CLASS=ButtonItem ID=btnDelete");

仅替换第一次出现。您可以再次对同一个字符串进行替换以进行第二次更改。

答案 1 :(得分:0)

如果你使用的是jQuery,那就像下面这样简单:

$('ButtonItem').each(function(i, v){
  $(v).attr('id', 'btnDelete' + i);
}

答案 2 :(得分:0)

您可以使用以下内容: 使用mystring =

步骤1.隐藏您的第一个实例

      mystr = substr(mystr,0,pos("CLASS=ButtonItem",mystr).concat("XXX",substr(mystr,pos("CLASS=ButtonItem",mystr) + 16);

第2步将ID添加到sencond实例

     substr(mystr,0,pos("CLASS=ButtonItem")+16).concat(" ID=btnDelete2 ",substr(mystr,pos("CLASS=ButtonItem") + 16);

步骤将第一个实例放回ID

    substr(mystr,0,pos("XXX")).concat("CLASS=ButtonItem ID=btnDelete1 ",substr(mystr,pos("XXX") + 3)

答案 3 :(得分:0)

好吧,我通过多种方式解决了这个问题而且没有很多复杂的代码,我确定了这个:

var sButtonURL = CRM.URL("EMList/EMList.asp");
var sAssignSelected = CRM.Button("AssignSelected","MergeContinue.gif","javascript:updateURL();");
var sDeleteSelected = CRM.Button("DeleteSelected","Delete.gif", "javascript:updateURL();");
var sAssignTarget = sAssignSelected.replace(/CLASS=ButtonItem/,"XXX=XXX ID=btnAssign1");


sAssignTarget = sAssignTarget.replace(/CLASS=ButtonItem/,"CLASS=ButtonItem ID=btnAssign2");
sAssignTarget = sAssignTarget.replace(/XXX=XXX/,"CLASS=ButtonItem");
var sDeleteTarget = sDeleteSelected.replace(/CLASS=ButtonItem/,"XXX=XXX ID=btnDelete1");
sDeleteTarget = sDeleteTarget.replace(/CLASS=ButtonItem/,"CLASS=ButtonItem ID=btnDelete2");
sDeleteTarget = sDeleteTarget.replace(/XXX=XXX/,"CLASS=ButtonItem");

这样做首先调用一个名为CRM.URL的函数,该函数使用参数作为目标返回格式正确的URL,我通常将其传递给按钮函数。但是,我在按钮函数调用中调用了一个Javascript函数,因此按钮函数调用在我发布的问题中生成了HTML。

然后我就可以开始搞乱HTML了。我知道我正在使用CLASS = ButtonItem,所以我改变了第一个并用一个标记XXX = XXX替换它,我还添加了第一个按钮的ID。然后我可以用第二个按钮ID替换第二个CLASS = ButtonItem。最后,我将XXX = XXX令牌改回CLASS = ButtonItem。

原油,但它确实有效。