2011-12-27 81 views
1

,所以我想我的页面中创建一个链接,但由于某种原因,它是越来越脱节的代码是内用JavaScript创建一个链接它

data = data + "<li><a href='#' onclick='History.pushState({state:null},'article,"+rtndata[j].id+"','article'); return false;'>" + rtndata[j].title + "</a></li>"; 

rtndata [J] .ID是一个ID号和rtndata [J] .title伪是标题都正在从数据库中提取,但是,当它呈现在浏览器中它变得

<a false;'="" return="" article,41','article');="" onclick="History.pushState({state:null}," href="#">Newsflash 5</a> 

所以我渲染实际上是

<a href="#" onclick="History.pushState({state:null},'article,41','article'); return false;'>"Newsflash 5</a>; 

任何人都可以帮助我吗?

+1

你应该逃出的onclick中的“字符= ''声明。 – omnidan 2011-12-27 18:02:14

+0

因此,这将是onclick = \'History.pushState({state:null},'article,'+ rtndata [j] .id +'','article');返回false;'\>正确? – 2011-12-27 18:05:07

+0

是的,但罗布W.已经解释得很好。 – omnidan 2011-12-27 19:34:29

回答

1

onclick属性的值包含在单引号内。因此,如果必须在属性中使用引号,则必须使用"&quot;(仅限于值)。

由于您的JavaScript字符串包含在双引号(")中,所以双引号在使用前必须先转义:"....onclick='...\"....'....";

要解决你的代码,我决定用双引号(转义),而不是单引号:

data = data + "<li><a href='#' onclick=\"History.pushState({state:null},'article,"+rtndata[j].id+"','article'); return false;\">" + rtndata[j].title + "</a></li>"; 

的相关详细表:

JS string marker  Attribute marker  Valid attribute value markers 
     "    \"     ' &quot; 
     "    '     \" &quot; 
     '    "     \' &quot; 
     '    \'     " &quot; 
+0

这很好,非常感谢 – 2011-12-27 19:32:11