我有一个函数将一个字符串返回一个名为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> </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>
有什么想法吗?
答案 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。
原油,但它确实有效。