[英]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.