2012-04-04 4 views
0

誰かが空白を含む文字列をパラメータとしてJavaScript関数に渡すことができない理由を私に説明できますか? 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); 
​ 

答えて

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" 
    } 
) 
+0

素晴らしい、thg435! –

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 
+0

こんにちはジョン、ありがとう!問題が解決しました! –

関連する問題