javascript传入函数包含空格的字符串在第一个空格被截断?

tim*_*son 0 javascript parameters whitespace function

有人可以向我解释为什么你不能将包含空格的字符串作为参数传递给javascript函数?

这是我的代码,它显示了这个问题,只是将鼠标悬停在链接上,你会发现只有"mario"显示为标题而不是"mario and luigi"

 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);
?
Run Code Online (Sandbox Code Playgroud)

geo*_*org 6

title='+subject+'应该是title="'+subject+'".您需要引用该属性,否则标记无效.

作为奖励,这里是python format函数的类比,这使得这样的事情变得更容易:

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

用法:

html = format(
    '<a class="pjax" href="{href}" title="{subject}"><span class="{className}"... etc',
    {
        href: "some_link",
        subject: "mario and luigi",
        className: "foobar"
    }
)
Run Code Online (Sandbox Code Playgroud)