是否可以在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>
}
任何想法? ;)
答案 0 :(得分:3)
是的,您可以在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
设置为某个变量,并输出id = <?= $linha; ?>
但是您的循环执行了很多次。对每个输出执行$(document).ready()
时,$linha
已被解释为循环输出的最后一个值。这导致document.ready
将事件附加N次(N =你的while循环的迭代次数)到同一个DOM元素(无论你的while循环输出$linha
的最后一次迭代)。使用上面的代码段,它会使每个id
和$linha
变量保持一致并且相互私密,因此您不必担心冲突。
我意识到这种解释有点令人费解,可能很难理解;但javascript解释/执行/范围有特殊的规则,如果没有示例,它们的传达并不是非常简单。
答案 1 :(得分:-1)
是的,你可以:
<? while(...) { ?>
<script type="javascript">
// Here is you're js code
</script>
<? } ?>
在每个容器中添加php标签非常困难。