はい、ページが読み込まれたときに、ブラウザで実行されるPHPループ内でJavaScriptを出力できます。
ここでの問題は、膨大な数の変数が衝突していることです。そのスクリプトタグの各出力をカプセル化して、それが起こらないようにする必要があります。ここでは1つの提案です:
<script type="text/javascript">
<?php while(...): $l++; $linha = "#x" . $l; $linha2 = "x" . $l; ?>
(function($)
{
var mensagem = "<?= $mensagem; ?>",
id = "<?= $linha; ?>",
nextMsgOptions = {
msg: mensagem,
side: "bottomMiddle",
CSSClass: "nextMsg-LightTheme"
};
$(document).ready(function() {
$(id).click(function(){
$(id).nextMsg(nextMsgOptions);
});
});
})(jQuery);
<? endwhile; ?>
</script>
これは、各$linha
と$mensagem
変数は、ループの各反復のために互いから離れスコープ続けます。私が思っているのはあなたの古いコードですが、$linha
をいくつかの変数に設定し、出力回数はid = <?= $linha; ?>
回ですが、ループが何度も実行されます。各出力に対して$(document).ready()
が実行された場合、$linha
は出力をループする最後の値としてすでに解釈されていました。これにより、document.ready
は同じDOM要素(あなたのwhileループの最後の反復が$linha
のどちらになるか)にイベントN回(N回のwhileループの反復回数)を添付させました。上記のスニペットでは、それぞれid
と$linha
のスコープを可変にしておき、互いにプライベートであるようにするため、衝突を心配する必要はありません。
私はその説明が一種のものであり、grokするのは難しいかもしれないことを理解しています。 javascriptの解釈/実行/スコープには特別なルールがあり、例がないと信じられないほど簡単に伝えることはできません。
まず、PHPがサーバー側で、JavaScriptがクライアント側であるため、JavaScriptループ内でJavaScriptコードを実行することはできません。あなたはPHPから* JSを生成することができます - これはあなたの意味ですか?第二に、あなたが期待しているものを出力し、あなたが得ているものを示してください。また、 'while'ループの継続条件がPHPにどのようなものかを教えてください。 – DaveRandom
テーブル内のすべてのユーザーが、クリックしたときに追加情報を表示するだけです。 – coiso
OK、テーブルを表示してください。あなたはそのテーブルで何をしたいのですか。現時点で生成されているHTMLとあなたが望むもので質問を編集してください。 – DaveRandom