0

我卡住了。也许正则表达式有更好的方法(喜欢听听你的想法)。

如果我只是在做一件事,比如-link-,那么以下是一次性的。

var testHtmlStr = '<tr>' +
                '<td class="eve"><div class="pad" style="overflow:hidden;">' +
                  '<a href="#" class="pic"><img height="50" width="80" title="{%desc%}" alt="{%desc%}" src="{%image%}"></a>' +
                  '<div class="sum"><a href="{%link%}" class="url">{%name%}</a></div>' +
                  '{%star_rating_html%}' +
                  '<a href="#" class="gray">{%eventC%}</a>' +
                  '<span class="block">{%evenC%}</span>' +
                '</div></td>' +
                '<td class="mor"><div class="pad"><a class="mor" href="{%link%}">{%linkName%}</a>' +
                '</div></td>' +
              '</tr>';
var ss = 'link';
var syntax = new RegExp('(^|.|\r|\n)(\{%\s*(' + ss + ')\s*%\})',"gi");

 alert(testHtmlStr.replace(syntax, '$1TESTESTESTESTS'));

以下是我的代码,它不起作用。我不知道为什么。相同的正则表达式,相同的 html 模板模式。此外,我的 .each 通过字符串重复,但似乎在每次重复后字符串都返回到未修改状态。基本上,无论像 {%somehashkey%} 这样的 html 字符串是什么,我都希望将其替换为相应的哈希值。我认为我的代码可以工作,但不知道出了什么问题。有点不对劲,我知道。我无法追捕它。你的意见?

(function($){
var testHTML2 = '<tr>' +
                '<td class="eve"><div class="pad" style="overflow:hidden;">' +
                  '<a href="#" class="pic"><img height="50" width="80" title="{%desc%}" alt="{%desc%}" src="{%image%}"></a>' +
                  '<div class="sum"><a href="{%link%}" class="url">{%name%}</a></div>' +
                  '{%rating%}' +
                  '<a href="#" class="gray">{%eventC%}</a>' +
                  '<span class="block">{%evenC%}</span>' +
                '</div></td>' +
                '<td class="mor"><div class="pad"><a class="mor" href="{%link%}">{%linkName%}</a>' +
                '</div></td>' +
              '</tr>';

var type = "yahoo";
var disp = {};
disp.eventC = '5';
disp.rating = "<div>rating here</div>";
switch (type) {
case 'yahoo':
    disp.link = 'http://www.yahoo.com';
    disp.image = 'SOMe IMAGE' ;
    disp.name = "VENICE BEACH";
    disp.desc = 'MORE INFO&nbsp;';
    disp.linkName = 'YAHOO';
break;
default:
    disp.link = 'http://www.google.com';
    disp.image = 'Some IMAGE';
    disp.name = "BABY BABY";
    disp.desc = 'MORE INFO&nbsp;YOYOYO';
    disp.linkName = 'GOOGLE';
}

$.each( disp, function(t, num){
var syntax = new RegExp('(^|.|\r|\n)(\{%\s*(' + t + ')\s*%\})',"gi");
testHTML2.replace(syntax, num)
});
alert(testHTML2);
})(jQuery);
4

1 回答 1

1

您没有为 testHTML2 分配新值。

testHTML2 = testHTML2.replace(syntax, num)
于 2012-09-23T02:58:44.120 回答