【问题标题】:Object function has no method (I'm not a javascript coder)对象函数没有方法(我不是 javascript 编码器)
【发布时间】:2013-07-07 16:33:48
【问题描述】:

我有一个运行 Woocommerce 和 WPML 多语言插件的 wordpress 网站。 在结帐页面上,我遇到了一个 javascript 错误(我不擅长 js)。

错误是:

Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,h)} has no method 'removeCookie'

这就是所谓的错误:

jQuery(document).ready(function(){
if(jQuery.cookie != undefined) {
    // Check if cookie are enabled
    jQuery.cookie('wpml_browser_redirect_test', '1');
    var cookie_enabled = jQuery.cookie('wpml_browser_redirect_test') == 1;
    jQuery.removeCookie('wpml_browser_redirect_test');
    ...

这是带有函数的文件:

(function ($, document, undefined) {

var pluses = /\+/g;

function raw(s) {
    return s;
}

function decoded(s) {
    return decodeURIComponent(s.replace(pluses, ' '));
}

$.cookie = function (key, value, options) {

    // key and at least value given, set cookie...
    if (value !== undefined && !/Object/.test(Object.prototype.toString.call(value))) {
        options = $.extend({}, $.cookie.defaults, options);

        if (value === null) {
            options.expires = -1;
        }

        if (typeof options.expires === 'number') {
            var days = options.expires, t = options.expires = new Date();
            t.setDate(t.getDate() + days);
        }

        value = String(value);

        return (document.cookie = [
            encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
            options.path    ? '; path=' + options.path : '',
            options.domain  ? '; domain=' + options.domain : '',
            options.secure  ? '; secure' : ''
        ].join(''));
    }

    // key and possibly options given, get cookie...
    options = value || $.cookie.defaults || {};
    var decode = options.raw ? raw : decoded;
    var cookies = document.cookie.split('; ');
    for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) {
        if (decode(parts.shift()) === key) {
            return decode(parts.join('='));
        }
    }

    return null;
};

$.cookie.defaults = {};

$.removeCookie = function (key, options) {
    if ($.cookie(key, options) !== null) {
        $.cookie(key, null, options);
        return true;
    }
    return false;
};

})(jQuery, document);

由于我不懂javascript,我真的不知道该怎么想。我知道“对象函数没有方法”是一个常见问题,我看过其他帖子但我无法理解。

所以,伙计们(和女孩),我需要这方面的帮助。

谢谢

布鲁诺

【问题讨论】:

    标签: javascript object methods


    【解决方案1】:

    如果您没有包含任何 jQuery.cookie 插件,就会发生这种情况。

    【讨论】:

    • 您好,非常感谢您的回答。这是我检查的第一件事,它包含在 中。没有404或类似问题,没关系。我检查了萤火虫和 chrome 控制台。
    • @BrunoHug: 是在 jQuery 之后包含的吗?还有其他的 jQuery 吗?
    • 在 Jquery (jQuery v1.8.3) 之后。是的,你是对的,主题加载了另一个(jQuery v1.7.1)。这可能是问题吗?
    • @BrunoHug:这正是问题所在。该插件附加到 jQuery 的第一个实例,但第二个实例替换它。不应包含多个 jQuery 副本。
    • 我通过撤回其中一个 jquery 调用解决了这个问题,但它仍然不起作用。我不知道在哪里看
    【解决方案2】:

    我同意上述帖子,但这也应该有所帮助: 您的错误意味着当您调用/使用 .removeCookie 函数时,您的代码无法找到/找到使用该名称执行的函数/方法。 确保使用 .removeCookie 方法的文件与使用代码的文件位于同一文件夹中,并确保您的文件“包含”使用 .removeCookie 方法的文件。也有可能您可能需要在“.removeCookie”之前编写其他内容希望这会导致解决方案。 此外,如果您对所有代码都使用 Wordpress,您可能希望获得有关 Wordpress 的帮助。可能是安装不正确或者是什么导致代码出现故障...

    【讨论】:

    • 非常感谢您的回答。这是我检查的第一件事,它包含在 中。没有404或类似问题,没关系。我检查了萤火虫和铬控制台。 Wordpress 安装良好(我重新安装了它)。
    猜你喜欢
    • 2015-03-05
    • 1970-01-01
    • 2012-02-11
    • 2016-10-10
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多