从php循环调用javascript函数

时间:2011-07-31 21:30:01

标签: php javascript jquery ajax

如果我能做到这一点,我正在受伤,因为我在过去2天尝试这一点但没有成功。

我想从php

运行java脚本函数

喜欢

php示例

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

java脚本

<script type="text/javascript">

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

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

但我得到错误jfun未定义。

我能理解的是我的java脚本函数在php执行时还没准备好。 有没有什么方法可以循环,就像在DOM / Page准备就绪时运行php循环一样,以便java脚本函数可以在那个时间或任何其他方式准备好....

由于

4 个答案:

答案 0 :(得分:4)

你必须在调用之前定义该函数

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>

答案 1 :(得分:2)

您的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函数调用以循环更好。

答案 2 :(得分:0)

首先,确保您的javascript函数高于函数使用。

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

答案 3 :(得分:0)

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