我正在尝试运行基础自定义表单 javascript 并不断遇到类型错误。错误是
表格无法初始化;TypeError 无法调用未定义的方法“indexOf”
我似乎无法弄清楚为什么会抛出这个错误。看起来这段代码是罪魁祸首
return arr.indexOf(item) === idx; around line 272
arr 对象在尝试运行此代码时为空。不确定这是否是由于脚本早期出现其他问题或其他原因造成的。任何帮助将不胜感激。
我正在尝试运行基础自定义表单 javascript 并不断遇到类型错误。错误是
表格无法初始化;TypeError 无法调用未定义的方法“indexOf”
我似乎无法弄清楚为什么会抛出这个错误。看起来这段代码是罪魁祸首
return arr.indexOf(item) === idx; around line 272
arr 对象在尝试运行此代码时为空。不确定这是否是由于脚本早期出现其他问题或其他原因造成的。任何帮助将不胜感激。
仅供参考,我刚遇到这个。这是一个 Prototype.js 冲突。基本上,Prototype < 1.7.1 不做 ployfillArray.filter
并且 Prototype 的方法版本似乎没有传递第三个参数,即arr
thats undefined
。所以你可以做几件事来解决:
调整 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>');
Array.filter
以将 Array 作为第三个参数传递。我不完全确定它在哪里,我寻找它,因为这是我第一次降低风险,但我最终决定升级。arr 对象在尝试运行此代码时为空
这正是错误所抱怨的。
您需要修复代码以确保它arr
不为空,或者在它为空时避免使用它。