2

PHPでonclickイベントを使用してJavaScript関数を渡そうとしています。私が直面している問題は、渡す必要がある関数に、次のように二重引用符で囲む必要があるパラメーターがあることです。

onclick="removeElement("div8")"

JavaScriptを使用してパラメータを生成するとうまくいきますが、phpでエコー関数を使用するたびに、ブラウザで関数を見ると次のようになります

onclick="removeElement(" div8")"

これを生成するために使用しているコードは次のとおりです。

echo '<div><img src="img.png" alt="image" onclick="removeElement("div'.$x.'")" /></div>';

ここで、$x はパラメーターに追加される数値です。

関数が全体として返され、間にスペースが入らないようにする方法はありますか?

4

7 に答える 7

9

これは、引用符の中に引用符があるために発生しています。これは機能せず、HTML パーサーを壊します。onclick を としてremoveElement(認識し、次に という属性を認識しますdiv8")"

これを試して:

echo '.....onclick="removeElement(&quot;div'.$x.'&quot;)"...';

HTML エンティティは属性内で解析されるため、結果は作業コードになります。

于 2012-04-09T20:21:14.857 に答える
2

エコーを次のように変更します。

echo '<div><img src="img.png" alt="image" onclick="removeElement(\'div'.$x.'\')" /></div>';
于 2012-04-09T20:20:43.393 に答える
2

JavaScript で引用符をエスケープする必要があります。それ以外の

onclick="removeElement("div8")"

あなたは書くべきです

onclick="removeElement(&quot;div8&quot;)"
于 2012-04-09T20:23:08.200 に答える
1

一重引用符をエスケープしてみてください

echo '<div><img src="img.png" alt="image" onclick="removeElement(\'div'.$x.'\')" /></div>';
于 2012-04-09T20:21:25.823 に答える
1

属性値にスペースを使用しない限り、html 属性値を囲む引用符を省略できます。すべてのブラウザがそれをうまく処理します。したがって、次のように書くことができます。

onclick=removeElement("div8")

一重引用符を使用することもできます。

onclick="removeElement('div8')" or 
onclick='removeElement("div8")'

または、二重引用符をエスケープできます。

echo '<div><img src="img.png" alt="image" onclick="removeElement(\"div'.$x.'\")" /></div>';
于 2012-04-09T20:22:00.973 に答える
0

しかし、より簡単な解決策は、html に直接書き込むことです。

?>
<div>
 <img src='img.png' alt='image' onclick='removeElement("div<?php echo $x; ?>")' />
</div>
于 2012-04-09T20:37:14.297 に答える