Javascript 无法从wordpress上的外部加载文件调用js函数

Javascript 无法从wordpress上的外部加载文件调用js函数,javascript,php,wordpress,scope,Javascript,Php,Wordpress,Scope,从外部加载的文件调用函数时遇到问题 我有search_form.php,从这里我调用函数,定义函数的client.js文件,以及加载client.js文件的plugin_functions.php文件 在plugin_functions.php文件中,我有以下代码: console.log('loaded_client'); function load_client_scripts() { wp_register_script('js-client', PLUGIN_URL.'inc

从外部加载的文件调用函数时遇到问题

我有search_form.php,从这里我调用函数,定义函数的client.js文件,以及加载client.js文件的plugin_functions.php文件

在plugin_functions.php文件中,我有以下代码:

console.log('loaded_client'); 
function load_client_scripts() {
     wp_register_script('js-client', PLUGIN_URL.'includes/js/client.js',array('jquery'),false);
     wp_enqueue_script( 'js-client' );
 };
add_action( 'wp_enqueue_scripts', 'load_client_scripts' );
在client.js中,我将函数定义如下:

(function($) {
    function validateForm(){
        console.log('Form validated');
    };
})( jQuery );
最后,在search_form.php中,我使用onclick调用函数:

 <div onclick="validateForm()">
    CLICK ME
 </div>

点击我
现在,js文件正在正确加载,因为我得到了控制台输出“loaded_client”。但是,当我单击div时,我得到ReferenceError:validateForm()未定义

我做错了什么?这当然是一个范围问题,但我无法解决

(函数($){
(function($) {
 window.validateForm = function(){
    console.log('Form validated');
};
})( jQuery );

<div onclick="window.validateForm()">
CLICK ME
</div>
window.validateForm=函数(){ console.log('formvalidated'); }; })(jQuery); 点击我
您是正确的,在您的示例中,作用域是错误的,因为包装在
(function($){
这个匿名函数中


为清晰起见进行编辑:如果希望它是一个全局可访问的函数,可以将其附加到窗口对象,如本例所示。

请尝试将JS加载到页脚中

设置页脚为真。我认为它会起作用

wp_register_script( 'js-client', PLUGIN_URL.'includes/js/client.js',array('jquery'),false,true);

在控制台中显示了什么错误?Ctrl+U检查JS是否链接?检查最后一段,JS文件是否链接。我得到的错误是ReferenceError:validateForm()未定义。我试图将validateForm函数移到父函数之外,但不起作用。此外,我添加了“窗口”在函数名之前,两个位置..我在控制台上得到相同的错误。您可以复制粘贴此答案中的代码,它将工作。您需要将函数设置为窗口范围变量,就像我在上面的示例中所做的那样。如果该代码不工作,则说明您的脚本未正确包含。这就是为什么我无法找到它,beca在环境之外使用,一切都应该正常工作。文件包括在内,因为我在控制台上获得了“加载的客户端”输出。将
console.log(“加载的客户端”)
移动到
加载的客户端脚本()的最后一行
然后查看它是否仍然以当前形式输出,您不知道它在下一行中没有错误。它与您的示例一起工作。当我从inspect元素检查client.js文件时,我发现它不包含我的函数。这是一个缓存问题。现在,该函数在窗口空间中声明,如您的示例所示。谢谢!