如果我能做到这一点,我正在受伤,因为我在过去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脚本函数可以在那个时间或任何其他方式准备好....
由于
答案 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是已知的。