也许我';我们已经失去了剧情,但是为什么这一小块JavaScript不起作用呢?

也许我';我们已经失去了剧情,但是为什么这一小块JavaScript不起作用呢?,javascript,jquery,Javascript,Jquery,我想为我的表单提供一个通用的错误处理程序 var errorsBox = function() { var $errorBox = $('#form-error'); return { add: function(errors) { if ($errorBox.length === 0) { $errorBox = $('<div id="form-error"><ul></u

我想为我的表单提供一个通用的错误处理程序

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>');
            });
        }
    };
};
var errorsBox=函数(){
var$errorBox=$(“#形式错误”);
返回{
添加:函数(错误){
如果($errorBox.length==0){
$errorBox=$(“
    ”).appendTo('form'); }; $errorBox.find('ul>li').remove(); $.each(错误,函数(i,错误){ $errorBox.find('ul').append('
  • '+error+'
  • '); }); } }; };
    你可以戴着它玩

    我要走了

    errorsBox.add不是一个函数

    我相信这是显而易见的,但我似乎不明白为什么这可能不起作用

    我做错了什么


    谢谢

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

    errorsBox().add(...)
    

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

    errorsBox().add(...)
    

    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>');
    
                });
            }
    };
    
    var errorsBox={
    $errorBox:(“#表单错误”),
    添加:函数(错误){
    如果($errorBox.length==0){
    $errorBox=$(“
      ”).appendTo('form'); }; $errorBox.find('ul>li').remove(); $.each(错误,函数(i,错误){ $errorBox.find('ul').append('
    • '+error+'
    • '); }); } };
      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>');
      
                  });
              }
      };
      
      var errorsBox={
      $errorBox:(“#表单错误”),
      添加:函数(错误){
      如果($errorBox.length==0){
      $errorBox=$(“
        ”).appendTo('form'); }; $errorBox.find('ul>li').remove(); $.each(错误,函数(i,错误){ $errorBox.find('ul').append('
      • '+error+'
      • '); }); } };
        我想我们每个人都会有这样或那样的经历。:)我想我们每个人都会有这样或那样的经历顺便说一句,如果我要使用对象文字,我需要使用
        this.$errorBox
        来访问该变量,不是吗?顺便说一句,如果我要使用对象文字,我需要使用
        this.$errorBox
        来访问该变量,不是吗?