2012-04-04 34 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+'" 。您需要引用該屬性,否則標記無效。

作爲獎勵,這裏的蟒蛇的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! – 2012-04-04 01:30:21

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

嗨,John,謝謝!問題解決了! – 2012-04-04 01:32:22

相關問題