2011-12-27 9 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>; 
012です

誰も助けてくれますか?

+1

あなたはonclickの内 '文字をエスケープする必要があります= ''声明。 – omnidan

+0

これはonclick = \ 'History.pushState({state:null}、' article、+ rtndata [j] .id + "'、' article ')となります。 falseを返す; '\>正しい? –

+0

ええ、Rob W.はすでにそれをとてもうまく説明しました。 – omnidan

答えて

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>"; 

Detailledテーブル:

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

これは完全に感謝します –

関連する問題