你能从PHP循环调用JavaScript函数吗?

Can you call JavaScript function from PHP loop?

本文关键字:JavaScript 函数 调用 循环 PHP      更新时间:2023-09-26

如果我能做到这一点,我就会受伤,因为我从过去的两天里一直在尝试,但没有成功。

我想从PHP中运行JavaScript函数

PHP示例

<div id="meprocess"></div>
<?php
for($i=1;$i<=10;$i++)
{
?>
<script>
jfun(<?php echo $i;?>);
</script>
<?php
}
?>
JavaScript

<script type="text/javascript">
function jfun(n)
{
html="Loop is on" + n;
$("<div>"+ html +"</div>").appendTo("div#meprocess");   
}
</script>

我正在尝试生成一个一个一个打印循环数的页面。

但是我得到错误jfun没有定义

我能理解的是,我的JavaScript函数在PHP执行时还没有准备好。是否有其他方法,比如在DOM/Page准备好时运行PHP循环,这样JavaScript函数就会准备好,或者其他任何方法。

你必须在调用它之前定义这个函数

http://sandbox.phpcode.eu/g/15b02.php

<div id="meprocess"></div>
<script type="text/javascript">
function jfun(n)
{
html="Loop is on" + n;
$("<div>"+ html +"</div>").appendTo("div#meprocess");   
}
<?php
for($i=1;$i<=10;$i++)
{
?>
jfun(<?php echo $i;?>);
<?php
}
?>
</script>

您的PHP代码正在生成(以一种非常糟糕的方式…)一些javascript代码将由脚本执行。虽然它应该可以工作,但这绝对不是最好的方法—您应该在js端运行循环,最终从PHP脚本传递值。

然而:

"未定义的函数"问题是由于您试图在创建函数之前运行代码;使用jQuery,让一些代码只在加载完所有内容后才执行,使用:

$(document).ready(function(){
// Your code here..
})

还是

$(function(){
// Your code here..
})

如下所述:http://api.jquery.com/ready/

对于For循环,你应该生成一些像这样的js:
<div id="meprocess"></div>
<script type="text/javascript">
for (i=1; i<=10; i++) {
jfun(i);
}
</script>

. .也许,从PHP脚本生成最小/最大值:

<?php
  $min = 1;
  $max = 10;
?>
<div id="meprocess"></div>
<script type="text/javascript">
for (i=<?php print $min; ?>; i<=<?php print $max; ?>; i++) {
jfun(i);
}
</script>

. .这比写N个函数调用来循环要好的多

首先,确保你的javascript函数在函数使用之上。

或者试试<script>jfun("<?php echo $i;?>");</script>

在PHP代码之前编写代码。在这种情况下,函数jfun是已知的。