0

行き詰まっています。おそらく、正規表現を使用するより良い方法があります(あなたの考えを聞くなど)。

1回限りの場合、次のように機能します。たとえば、-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 に答える