0

有人可以向我解释为什么不能将包含空格的字符串作为参数传递给 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);
​
4

2 回答 2

6

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

作为奖励,这是一个 pythonformat函数的模拟,它使这样的事情变得更容易:

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 回答