2012-09-23 26 views
0

我陷入困境。也許有更好的方法與正則表達式(喜歡聽你的想法)。使用HTML模板字符串和Regex'ing動態值。卡在正則表達式

作爲一次性下面的作品,如果我只是在一件事上說, - 鏈接。

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模板模式。另外,我的每個重複字符串,但似乎在每次重複後,字符串返回到其未修改的狀態。基本上,無論是像這樣的{%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); 

回答

1

您沒有爲testHTML2分配新值。

testHTML2 = testHTML2.replace(syntax, num) 
+0

請tar和羽毛我!哇,我的這個新錯誤。感謝您指出!哈哈哈。我感覺很糟糕:-)再次感謝。我一定很累! –

相關問題