2011-12-27 65 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