无法获取表单javascript在基础内工作

时间:2013-07-23 14:16:11

标签: javascript jquery magento zurb-foundation

我正在尝试运行基础自定义表单javascript并继续遇到类型错误。错误是

  

表格无法初始化; TypeError无法调用方法'indexOf'   未定义的“

我似乎无法弄清楚为什么会抛出这个错误。看起来这段代码是罪魁祸首

return arr.indexOf(item) === idx; around line 272

尝试运行此代码时,arr对象为null。不确定这是否是由于脚本中早先出现的其他错误或者是什么造成的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

  

arr对象在尝试运行此代码时为null

这正是错误所抱怨的。

您需要修复代码以确保arr不为null,或者在它为null时避免使用它。

答案 1 :(得分:0)

仅供参考,我刚刚遇到过这个问题。这是一个Prototype.js冲突。基本上,Prototype< 1.7.1并没有为Array.filter执行ployfill而Prototype的方法版本似乎没有通过第三个参数,即arr那个undefined。所以你可以做一些事情来解决:

  1. 将Prototype升级到1.7.1 - 这就是我所做的,但我没有在Magento上彻底测试它,所以可能存在问题......它是一个小问题发布,可能出现什么问题?< / em>: - )
  2. 调整Foundation代码块,以便获得在var中编译的类的列表,然后您可以在回调中引用它来过滤:

      // OLD
      $customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize].concat(copyClasses).filter(function (item, idx, arr) {
        if (item === '') return false;
        return arr.indexOf(item) === idx;
      }).join(' ') + '"><a href="#" class="selector"></a><ul /></div>');
    
      //-----------------
      // NEW
      var classList = ['custom', 'dropdown', customSelectSize].concat(copyClasses);
      $customSelect = $('<div class="' + classList.filter(function (item, idx, arr) {
        if (item === '') return false;
        arr = typeof arr === 'undefined' ? classList : arr;
        return arr.indexOf(item) === idx;
      }).join(' ') + '"><a href="#" class="selector"></a><ul /></div>');
    
  3. 您可以尝试覆盖Array.filter的Prototype版本,以将Array作为第三个参数传递。我并不完全确定它的存在,我寻找它,因为这是我第一次尝试降低风险,但最终我决定升级。