0

サーバー側の値をタグのonclickハンドラーに渡そうとしaていますが、リンクをクリックするとクライアント側で異なる結果が得られます。

私のPHPコード:

$any="link1";
echo(" <a id='link1' href='#' onclick='VisibleFalse($any)'>[+]</a><span><b>$candidatename</b></span>");

文字列をアラートとして表示して"link1"いる関数に文字列を渡したい:VisibleFalse

function VisibleFalse(ID)
{
    alert(ID);
}

しかし、それは"http://localhost/..."アラートに印刷されています。

私はあなたの提案のいずれかをいただければ幸いです。

4

3 に答える 3

3

問題は、文字列を渡していて、それに引用符を追加するのを忘れたため、最終結果がそのJavaScript関数内の文字列になることです。これを確認するためのより良い方法は次のとおりです。

$any="link1";
// First, echo isn't a function. It can be faked to be used as one, but that's not recommended
// Second, sort out your quoting like this:
echo '<a id="link1" href="#" onclick="VisibleFalse(\''.$any.'\')">[+]</a><span><b>'.$candidatename.'</b></span>';

// OR
echo "<a id='link1' href='#' onclick='VisibleFalse(\"$any\")'>[+]</a><span><b>$candidatename</b></span>";
于 2012-07-17T08:15:59.673 に答える
0

引用符と同等のHTMLUnicode(他の文字はここ&#39;にあります)を使用します。

echo(" <a id='link1' href='#' onclick='javascript:VisibleFalse(&#39;$any&#39;)'>[+]</a><span><b>$candidatename</b></span>");
于 2012-07-17T08:17:22.450 に答える
0

JavaScriptの文字列リテラルは引用符で囲む必要があります。

onclick='VisibleFalse(&quot;$any&quot;)'>

(ただし、PHPに埋め込まれたHTMLに埋め込まれたJavascriptと同様に、本質的なイベント属性は価値があるよりも苦痛であると考えられています。代わりに控えめなJavaScriptを使用してください。)

また、文字列リテラルを終了する引用文字が含まれていないことを確認する必要があります(属性値が終了しないように、$anyおそらくHTMLセーフにする必要があります)。htmlspecialchars

于 2012-07-17T08:15:55.680 に答える