繁体   English   中英

php循环内的javascript

[英]javascript within php loop

是否可以在php循环中运行javascript代码? 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>

}

有任何想法吗? ;)

是的,您可以在页面加载时在PHP循环中输出javascript,以由浏览器执行。

这里的问题是,您有大量的变量发生冲突。 您需要封装该脚本标记的每个输出,以防止发生这种情况。 这是一个建议:

<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设置$linha某个变量,并且输出id = <?= $linha; ?> id = <?= $linha; ?>但是您的循环执行了很多次。 当对每个输出执行$(document).ready()$linha已经被解释为循环输出的最后一个值。 这导致document.ready将事件N次(N = while循环的迭代次数)附加到同一DOM元素(无论while循环的最后一次迭代输出$linha$linha )。 有了以上代码段,它使每个id$linha变量的范围和私有范围互不相同,因此您不必担心冲突。

我意识到解释有点令人费解,可能难以理解。 但是javascript解释/执行/作用域具有特殊的规则,如果没有示例,这些规则很难传达出来。

是的你可以:

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

在每个容器中添加php标签非常困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM