也许我已经失去了情节,但为什么这一小段JavaScript不起作用?

时间:2010-07-02 01:40:58

标签: javascript jquery

我想要一个表格

的通用错误处理程序
var errorsBox = function() {
    var $errorBox = $('#form-error');

    return {
        add: function(errors) {
            if ($errorBox.length === 0) {
                $errorBox = $('<div id="form-error"><ul></ul></div>').appendTo('form');
            };

            $errorBox.find('ul > li').remove();

            $.each(errors, function(i, error) {
                $errorBox.find('ul').append('<li>' + error + '</li>');
            });
        }
    };
};

您可以在JSbin上播放。

我正在

  

errorsBox.add不是函数

我确定这很明显,但我似乎无法理解为什么这可能不起作用。

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:6)

您将errorsBox定义为函数。所以,你也可以这样称呼它:

errorsBox().add(...)

答案 1 :(得分:2)

errorsBox是一个返回对象的函数。返回的对象有一个add()函数。

你可以这样做:

errorsBox().add(['error1', 'error2']);

但看起来有点奇怪。也许你没有按照自己想要的方式进行设置。

如果您希望能够以您的方式(errorsBox.add(...))调用它,请尝试以下方法:

var errorsBox = {
       $errorBox: ('#form-error'),

        add: function(errors) {

            if ($errorBox.length === 0) {
                $errorBox = $('<div id="form-error"><ul></ul></div>').appendTo('form');
            };

            $errorBox.find('ul > li').remove();

            $.each(errors, function(i, error) {

                $errorBox.find('ul').append('<li>' + error + '</li>');

            });
        }
};