javascript - 在循环中从 PHP 调用 Javascript 函数

标签 javascript php

我已经在网上寻找这个问题的答案大约一个小时了,并根据这些答案尝试一些事情(我知道这种问题经常出现)。然而,我所做的一切都不起作用。首先解释一下:

我正在 PHP 中循环访问一个表(在 while 循环中),并且需要为表返回的行集中的每条记录调用 JavaScript 函数。为了尝试开始,我有一个 super 基本的函数,它只是让我知道我调用了它......它不起作用。这是 PHP 代码(使用 DIV 标记的原因是我最终想从 JS 代码中替换 DIV 的innerHTML,我知道如何做到这一点,并且已经在其他地方这样做了......):

// the loop:
while( $row = mysqli_fetch_array( $heralds_result ) )
{
   $herald_id = $row["roster_id"];
   $sca_name = $row["sca_name"];

   // create a div for each herald as we go with its' own name (using id ...)
   echo "      <div id='" . $herald_id . "'>\n";
   echo "         " . $sca_name . "\n";
   echo "         <script type='text/javascript'>test();</script>\n";
   echo "      </div>\n";

}

这是 JavaScript 代码(位于文件底部):

<script type="text/javascript">
    function test()
    {
       alert( "Test function" );
    }
</script>

但是,我没有收到“警报”对话框,只有文本流出。所以对于第一行我得到:

  <div id='1'>
     Aasa Thorvaldsdoittr
     <script type='text/javascript'>test();</script>
  </div>

由于警报对话框没有显示,它告诉我Javascript函数没有被调用,或者有一些错误,但在我盯着它看了很长时间后确实不明显。这本来不应该这么困难,我确信我有一些非常明显的错误,人们一看到代码就会看到这些错误,但它完全回避了我。

最佳答案

"JavaScript code at the bottom of the file"

是问题所在。脚本在添加到 DOM 后立即运行。事物按照 HTML 中给出的顺序添加到 DOM 中。

因此,尝试调用您的函数的脚本标记将被添加 - 并执行 - 添加实际包含该函数的脚本标记之前。所以他们尝试执行一个尚不存在的函数。如果您查看浏览器的控制台(在开发人员工具中),您可能会遇到一些有关此问题的错误。

简单的解决方案是在 HTML 中的某个位置在尝试使用该函数的代码之前声明包含该函数的脚本标记。

<小时/>

顺便说一句,了解您实际上打算用这个函数做什么会很有趣 - 考虑是否可以通过使用 PHP 创建一些标记来直接实现相同的效果,而不是在页面时触发大量 JS正在加载。

关于javascript - 在循环中从 PHP 调用 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637711/

相关文章:

javascript - 重定向到随机页面(当前页面除外)

javascript - 我在升级到 jQuery UI 1.8.11 时遇到问题

javascript - 如何处理中继突变中 Unresolved props?

Javascript: indexOf($(this) 获取点击元素的数组索引值?

php - 使用 iis 在 Windows 7 上安装 php mysql 安装

PHP 更新无法正确更新数据库

javascript - 更改javascript nodejs中所有页面中的href url

php - 将 foreach 值添加到 Ajax

C# 数组,如何创建空数组?

php - 如何在laravel中创建资源路由