JavaScript внутри цикла PHP - PullRequest
       3

JavaScript внутри цикла PHP

0 голосов
/ 10 декабря 2011

Можно ли запустить код 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 ]

3 голосов
/ 10 декабря 2011

Да, вы можете вывести javascript внутри цикла PHP, который будет выполняться браузером при загрузке страницы.

Проблема в том, что у вас есть множество переменных, сталкивающихся. Вам нужно инкапсулировать каждый вывод этого тега сценария, чтобы этого не происходило. Вот одно предложение:

<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 присоединить событие N раз (N = количество итераций вашего цикла while) к одному и тому же элементу DOM (какой бы ни была последняя итерация вашего цикла while * $linha). С помощью приведенного выше фрагмента каждая переменная id и $linha находится в пределах видимости и не зависит друг от друга, поэтому вам не нужно беспокоиться о столкновениях.

Я понимаю, что объяснение довольно запутанно, и его трудно понять; но в интерпретации / исполнении / определении содержания javascript есть специальные правила, которые не просто невероятно передать без примеров.

0 голосов
/ 10 декабря 2011

Да, вы можете:

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

очень сложно добавить в каждый контейнер php теги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...