0

さて、私の質問は、Javascript で引用符をエスケープするにはどうすればよいですか? 以下のコードでメッセージを警告しようとしています。関数呼び出し内に二重引用符で囲まれた文字列が含まれており、構文エラーが発生するため、機能しないことはわかっています。onClickどうすれば機能しますか?私の条件は、関数呼び出しでパラメーターに単一引用符を使用できないことです。

    <html>
    <head>
    <script type="text/javascript">
    function litString(vals)
    {
    alert(vals);
    }
    </script>
    </head>
    <body>

    <?php echo "Just for a Test<br/>"; ?>

    <a href="#" onClick="litString("test one")"><h2>JS String Literal</h2></a>
    </body>
    </html>

アップデート:

私の実際の意図は、以下の PHP + JS コードの組み合わせを機能させることです。

 echo '<li><a href="#" title="'.$res_bb['eng'].'" onClick=loadChap('.$res_bb['id'].','.$res_bb['chapters'].',"'.$res_bb['mal'].'")><font size="2">'.$res_bb['mal'].'</font></a></li>';
4

4 に答える 4

6

バックスラッシュで引用符をエスケープします\

<a href="#" onClick="litString(\"test one\")"><h2>JS String Literal</h2></a>

または、一重引用符を使用できます。

<a href="#" onClick="litString('test one')"><h2>JS String Literal</h2></a>

または、属性を一重引用符で囲み、内部で二重引用符を使用することもできます。

<a href="#" onClick='litString("test one")'><h2>JS String Literal</h2></a>

文字列をエコーする場合は、PHP の引用符も処理する必要があるため、少し複雑になります。ここでは、単一引用符をエスケープして、上記の 2 番目のバージョンを生成します。

echo '<li><a href="#" title="'.$res_bb['eng'].'" onClick="loadChap('.$res_bb['id'].','.$res_bb['chapters'].',\''.$res_bb['mal'].'\')"><font size="2">'.$res_bb['mal'].'</font></a></li>';

これを入力でテストしました:

$res_bb = array('eng'=> "Title", 'id'=> 10, 'chapters'=> 13, 'mal'=> "Foo bar");

出力は次のとおりです。

<li><a href="#" title="Title" onClick="loadChap(10,13,'Foo bar')"><font size="2">Foo bar</font></a></li>
于 2013-04-14T05:59:29.527 に答える
3

よりクリーンなアプローチのためにaddEventListener属性data-*を使用することをお勧めします。

<a href="#" id="someButton" data-litString="test one">...

<script>
  var link = document.getElementById('someButton');

  link.addEventListener('click', function () {
    var vals = this.getAttribute('data-litString');
    alert(vals);
  });
</script>
于 2013-04-14T06:03:21.577 に答える
0

このまま行ったほうがいいのかな…

<li><a href="#" title="<?php echo $res_bb['eng']; ?>" onClick=loadChap("<?php echo $res_bb['id']; ?>", "<?php echo $res_bb['chapters']; ?>"," <?php echo $res_bb['mal']; ?>")><font size="2"><?php echo $res_bb['mal']; ?></font></a></li>
于 2013-04-14T06:06:54.797 に答える
0

HTML 属性には一重引用符を使用します。

onClick='litString("test one")'

しかし、それは本当の解決策ではありません。どういうわけか、これらの二重引用符をエスケープする必要があります。

于 2013-04-14T05:59:17.423 に答える