2012-03-08 8 views
0

JSを破棄することなく、次のパラメータ文字列をonclickイベントに埋め込むにはどうすればよいですか?今すぐダブルクォートとの衝突があります。 onclickイベントの値はJS変数から来ています。OnClickイベントでのJSONの受け渡し

例:

initializeMap('["2012-02-17 15:39:19.0,33.38727791932264,-86.74324840021933","2012-01-10 00:40:08.0,33.38708092092858,-86.74331461676397"]','%68%74%74%70%3a%2f%2f'); 

にOnclickイベントで:

<a href="#-" onclick="JavaScript:initializeMap('["2012-02-17 15:39:19.0,33.38727791932264,-86.74324840021933","2012-01-10 00:40:08.0,33.38708092092858,-86.74331461676397"]','%68%74%74%70%3a%2f%2f');">Click Me</a> 

おかげ

+1

(a)ラベル「JavaScript:」は不要です。 'Foo:'も使うことができます。 (b)これは、インラインイベントハンドラ以外のものを使用するほうが適切な場合の例です。 http://www.quirksmode.org/js/introevents.htmlをご覧ください。それ以外の場合は、二重引用符をエンコードする必要があります。これは迷惑なものです。 –

+2

ハンドラをインラインで追加する必要が本当にありますか? – hugomg

答えて

1

私はonclickイベントのためのJSハンドラのために行くだろう。あなたはインラインJSで立ち往生している場合

、これはインラインハンドラせずに処理した方がよい、ジェイクが言ったように

<a href="#-" onclick='initializeMap(["2012-02-17 15:39:19.0,33.38727791932264,-86.74324840021933", 
"2012-01-10 00:40:08.0,33.38708092092858,-86.74331461676397"],"%68%74%74%70%3a%2f%2f");'>Click Me</a> 
2

を使用してみてください。今日は誰もインラインハンドラを使用するべきではありません。言った、2つのオプションがあります。

  • あなたがHTMLあなたのJSの文字列をエスケープすることができますが、それは次のようになります。それは有効なJavaScript
  • だから "[&quot;2012-02-17 15:39:19.0,33.38727791932264,-86.74324840021933&quot;,&quot;2012-01-10 00:40:08.0,33.38708092092858,-86.74331461676397&quot;]"
  • あなたは本当に、JSON引用符で囲む必要はありません。
+0

これにはescape()を使用していますか? – Jake

+0

Oooops、私は実際にURLエンコーディングを使用しています(これは 'エスケープ'の機能です).HTMLエンコーディングを使用する必要があります... –

+0

JSのHTMLをエスケープする方法は次のとおりです。http://shebang.brandonmintern.com/ foolproof-html-escaping-in-javascript –