2011-12-10 10 views
-1

PHPループ内でJavaScriptコードを実行することはできますか? javascriptが完璧に機能するのは、現在複数回実行されていないということです。PHPループ内のjavascript

while(...) { 

$l=$l+1; 
$linha="#x".$l; 
$linha2="x".$l; 
    ?> 

<script type="text/javascript"> 
$(document).ready(function() { 

var mensagem = "<?= $mensagem ?>"; 
var id= "<?= $linha ?>"; 

var nextMsgOptions = { 
    msg: mensagem, 
    side: "bottomMiddle",  
    CSSClass: "nextMsg-LightTheme",} 

$(id).click(function(){ 
    $(id).nextMsg(nextMsgOptions); 
}); 


}); 
</script> 

} 

;)

+2

まず、PHPがサーバー側で、JavaScriptがクライアント側であるため、JavaScriptループ内でJavaScriptコードを実行することはできません。あなたはPHPから* JSを生成することができます - これはあなたの意味ですか?第二に、あなたが期待しているものを出力し、あなたが得ているものを示してください。また、 'while'ループの継続条件がPHPにどのようなものかを教えてください。 – DaveRandom

+0

テーブル内のすべてのユーザーが、クリックしたときに追加情報を表示するだけです。 – coiso

+0

OK、テーブルを表示してください。あなたはそのテーブルで何をしたいのですか。現時点で生成されているHTMLとあなたが望むもので質問を編集してください。 – DaveRandom

答えて

3

はい、ページが読み込まれたときに、ブラウザで実行される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の解釈/実行/スコープには特別なルールがあり、例がないと信じられないほど簡単に伝えることはできません。

+0

最後に "(jQuery)"は何をしていますか? – coiso

+0

そしてJavaScriptはJavaScriptの中になければなりませんか? – coiso

+0

WORKS! (私はちょうどJavaScriptの中に入れていませんでした) – coiso

-1

はい、できます:

<? while(...) { ?> 
<script type="javascript"> 
// Here is you're js code 
</script> 
<? } ?> 

それは各コンテナのPHPタグを追加するのは非常に難しいことです。