我有这个JavaScript代码,其中rec()函数自己调用。此代码的目的是循环使用类似HTML的文本并替换所有出现的正则表达式" IMG(。*)tid"。
一旦处理完字符串,就应该在" newText"中输出字符串的最终版本。变量(第5行)。
var text = '<IMG tid="302293901" title="test"><P></P><IMG tid="302293901" title="test">';
alert("source text: " + text);
var newText = rec(text);
alert("final source text: " + newText);
function rec(str) {
var i = str.search("IMG(.*)tid");
alert("value of i: " + i);
if (i > -1) {
str = str.replace("IMG", "BLA");
alert("modified source text: " + str);
rec(str);
}
return str;
}
&#13;
当此代码运行时,它会修改&#34; text&#34;中的源字符串。变量,替换所有出现的&#34; IMG&#34;用&#34; BLA&#34;。在执行期间,该函数显示预期的最终字符串,如下所示。
然而,问题是第5行的警告框不会返回上面显示的结果,而是返回中间结果(其中只有一个&#34; IMG&#34;条目已被替换)。
返回的字符串如下所示。
所以这段代码可能是错误的结构,但是以什么方式?
答案 0 :(得分:4)
当你从rec中再次运行rec时,你没有对返回的结果做任何事情。您需要将其更改为str = rec(str)
答案 1 :(得分:1)
您需要返回rec
...
function rec(str) {
var i = str.search("IMG(.*)tid");
alert("value of i: " + i);
if (i > -1) {
str = str.replace("IMG", "BLA");
alert("modified source text: " + str);
return rec(str);
}
return str;
}