函数不能被调用

我搜索了过去2天的StackOverflow,并没有找到解决方案。 我试图做一些非常基本的事情,但WordPress让我把头发拉出来。

我有一个名为'test.js'的JavaScript文件,它位于我的Child Theme文件夹内的脚本文件夹中。 该文件具有以下代码:

function myFunc() {
 alert('hi');
}

我遵循了在Wordpress中加载JavaScript的最佳做法,并且在我的Child Theme文件夹的functions.php文件中包含了以下功能。

function add_my_script() {
wp_enqueue_script('my-script', get_stylesheet_directory_uri().'/scripts/test.js', array('jquery'), '1.0', true);                    }
add_action('init', 'add_my_script');

注意:get_stylesheet用于获取Child Theme目录,因为我的style.css是根据WordPress的子主题规则覆盖我的父主题中的style.css。

现在,在完成此操作后,我希望能够访问我的test.js文件中的函数myFunc()。 所以在我的function.php文件中,我有一个函数TestmyFunc(),它执行以下操作:

function TestmyFunc()
{
echo 'Click the button below';
echo '<button onclick="myFunc()">Click Me</button>';
}

当某个页面加载时,函数TestmyFunc()在Wordpress中调用。 该页面与输出“点击下面的按钮”打印完全一致,按钮说'点击我'也在那里。 现在这里是令人沮丧的部分,不管我点击按钮时无法做出响应。 绝对没有。

我的第一个想法是JavaScript没有加载,并且我的wp_enqueue_script代码存在问题。 但这不是问题。

我尝试了以下更改。 首先,我将test.js文件修改为这一行:

alert('hi');

然后,我简单地在我的functions.php文件中写下了以下函数:

    function run_my_script() {
    wp_enqueue_script('my-script', get_stylesheet_directory_uri().'/scripts/test.js', array('jquery'), '1.0', true);                    
        }
add_action('init', 'add_my_script');

run_my_script然后被设置为加载我的页面的方式与加载TestmyFunc()相同。 这似乎工作正常,当我在WordPress的页面加载run_my_script()函数的作品,我收到一个警告框说'嗨'只要加载页面。 显然,这不是我想要的,因为我希望它只在单击按钮时才显示,这需要从test.js文件调用的函数,而不仅仅是运行test.js脚本。

所以看起来可能有一个问题,我调用JavaScript函数的方式? 如果任何人都能以绝对的方式提供帮助,那就太好了。

我根本无法使用wp_enqueue_script来获得调用的JavaSript函数,它的唯一工作时间是当我按照本教程加载我的脚本时的老式/非WordPress推荐方式http://lorelle.wordpress.com/2005/09 / 16 /使用JavaScript的功能于WordPress的/

这涉及到包括在header.php中:

<script src="<?php echo get_stylesheet_directory_uri(); ?>/scripts/test.js" type="text/javascript"></script>

然后在functions.php中调用该函数

echo'
   <script type="text/javascript">
   <!--
   myFunc();
   //--></script>';

这工作和myFunc()运行调用。 但是,我不想编辑我的header.php文件,并且倾向于使用最佳实践wp_enqueue_script方法。

我真的很希望有人能够帮助我,因为在过去的48小时里,我几乎没有睡过,想尽一切办法,最后感到沮丧。


简单清单:

  • 检查你的源代码。 确保脚本在浏览器中输出。 确保URL是正确的。

  • wp_enqueue_scripts您对init的操作错误,请将其更改为: wp_enqueue_scripts 。 尽管你的代码可能会起作用,但它被认为是使用wp_enqueue_scripts的最佳实践。

  • 它应该是:

    add_action('wp_enqueue_scripts', 'run_my_script');
    
  • wp_head(); 和wp_footer(); 确保您的子主题/父主题具有以下标签: wp_head();wp_footer();

  • $ in_footer您可能必须将$ in_footer参数更改为false。 在报头中输出脚本。 换句话说,确保你的函数在你的标记被调用之前启动。

  • 希望能帮助到你!

    链接地址: http://www.djcxy.com/p/80965.html

    上一篇: Functions cannot be called

    下一篇: How to break/exit from a each() function in JQuery?