Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的应用程序告诉我我的方法未定义?_Javascript_Jquery_Html_Debugging - Fatal编程技术网

Javascript 为什么我的应用程序告诉我我的方法未定义?

Javascript 为什么我的应用程序告诉我我的方法未定义?,javascript,jquery,html,debugging,Javascript,Jquery,Html,Debugging,我有这个链接: <%= link_to_function "remove", "remove_fields(this)"%> 但是当我点击链接时,我得到了这个错误: Uncaught ReferenceError: remove_fields is not defined 这是为什么?我如何修复它?可能很明显,但是javascript链接在html源代码的头部吗?可能很明显,但是javascript链接在html源代码的头部吗?如果您有这样的函数声明: jQuery(functi

我有这个链接:

<%= link_to_function "remove", "remove_fields(this)"%>
但是当我点击链接时,我得到了这个错误:

Uncaught ReferenceError: remove_fields is not defined

这是为什么?我如何修复它?

可能很明显,但是javascript链接在html源代码的头部吗?

可能很明显,但是javascript链接在html源代码的头部吗?

如果您有这样的函数声明:

jQuery(function ($) {
    function remove_fields ...
});
然后它只在
jQuery(function(){})
函数的范围内,从外部看不到。解决此问题的两种方法:

var remove_fields;

jQuery(function ($) {
    remove_fields = function () { ... }
});
声明一个全局可访问的变量,并使其像往常一样成为函数

但更好的是:

jQuery(function ($) {
    function remove_fields ...

    $('a.some-class').click(remove_fields);
});

从jQuery范围内以编程方式附加click处理程序。

如果您的函数声明如下:

jQuery(function ($) {
    function remove_fields ...
});
然后它只在
jQuery(function(){})
函数的范围内,从外部看不到。解决此问题的两种方法:

var remove_fields;

jQuery(function ($) {
    remove_fields = function () { ... }
});
声明一个全局可访问的变量,并使其像往常一样成为函数

但更好的是:

jQuery(function ($) {
    function remove_fields ...

    $('a.some-class').click(remove_fields);
});

从jQuery范围内以编程方式附加单击处理程序。

您不应该使用
onclick
属性,这是一种糟糕的做法,早在90年代就已经存在了。相反,您应该为锚点添加一个类,并使用jQuery将处理程序绑定到click事件

HTML

<a class="remove-fields" href="#">remove</a>

您不应该使用
onclick
属性,这是一种不好的做法,应该追溯到90年代。相反,您应该为锚点添加一个类,并使用jQuery将处理程序绑定到click事件

HTML

<a class="remove-fields" href="#">remove</a>

您的函数在何处以及如何定义?它是否在jqueryready语句下?尝试将其从那里移动到公共范围它位于就绪语句下。。。如何将其移动到公共作用域?只需将其移动到
$(document).ready()函数的外部即可。此外,考虑避免使用<代码> OnCase< /Cord>,并使用JS DeCTLLI登记点击事件。建议不要将jQuery与RJS混合,除非您使用jQuery UJS。rjs通常依赖于prototype,可能存在一些冲突,可能会破坏您的代码。您的函数在哪里以及如何定义?是否在jQueryReady语句下?尝试将其从那里移动到公共范围它位于就绪语句下。。。如何将其移动到公共作用域?只需将其移动到
$(document).ready()函数的外部即可。此外,考虑避免使用<代码> OnCase< /Cord>,并使用JS DeCTLLI登记点击事件。建议不要将jQuery与RJS混合,除非您使用jQuery UJS。rjs通常依赖于原型,可能会有一些冲突破坏您的代码