0

空白を含む文字列をパラメーターとして JavaScript 関数に渡すことができない理由を誰かに説明してもらえますか?

この問題を示す私のコードは次のとおりです。リンクにカーソルを合わせると、タイトルとして「マリオとルイージ」ではなく「マリオ」のみが表示されることがわかります。

 var href='mario and luigi', subject=$('div').data('subject'), 
 size=$('div').data('reviewid'), 
      src=$('div').data('itemid'), className='mini';

      function formatLink(href, subject, src, size, className){            
                if(size=='mini')
                size='height:25px; width:25px;';
                else if(size=='medium')
                size='height:40px; width:40px;';
                else if(size=='large')
                size='height:125px; width:125px;';
                else if(size=='xlarge')
                size='height:180px; width:260px;';                
            return '<a class="pjax" href='+href+' title='+subject+'><span class='+className+'><span class="image-wrap" style="position:relative; display:inline-block; background:url('+src+') no-repeat center center;'+size+'" ><img style="opacity:0;"></span></span><span title='+subject+'>'+subject+'</span></a>';
        }
var link=formatLink(href, subject, src, size, className);
$('div').html(link);
​
4

2 に答える 2

6

title='+subject+'する必要がありますtitle="'+subject+'"。属性を引用する必要があります。そうしないと、マークアップが無効になります。

おまけとして、このようなことをはるかに簡単にするpythonのformat関数の類似物を次に示します。

format = function(str, params) {
    return str.replace(/\{(\w+)\}/g, function($0, $1) { return params[$1] });
}

使用法:

html = format(
    '<a class="pjax" href="{href}" title="{subject}"><span class="{className}"... etc',
    {
        href: "some_link",
        subject: "mario and luigi",
        className: "foobar"
    }
)
于 2012-04-04T00:59:49.937 に答える
4
return '<a class="pjax" href='+href+' title='+subject+'><span 

href 属性を引用符で囲んでいないため、HTML は最終的にhref=mario and luigi. 引用符を追加して修正します (タイトルについても同じことを行います)。

return '<a class="pjax" href="'+href+'" title="'+subject+'"><span 
于 2012-04-04T01:01:51.163 に答える