对象在循环中运行时未定义,但在按顺序执行时未定义
Object not defined when running in a loop, but not when executed sequentially
我使用jQuery Masked Input插件将所有具有数据掩码属性的输入元素设置为属性掩码值:
给定这个html:
<input type='text' id="a" data-mask='999?999' />
<input type='text' id="b" data-mask='999' />
这个脚本:
$("input[data-mask]").each(function() {
var maskValue = $(this).data('mask');
console.log($(this).attr('id') + ": " + maskValue);
//undefined error here on second iteration "b: 999"
//no issues if you remove the data-mask from one of the input elements
return $(this).mask(maskValue);
});
在第二次迭代中,抛出了一个错误:"Uncaught TypeError:undefined不是函数",表示没有定义"split"。
firstNonMaskPos = null, $.each(mask.split(""), function(i, c) {
然而,这个代码运行得很好,掩码设置没有问题。
$('#a').mask('999?999');
$('#b').mask('999');
有人能揭露这种奇怪的行为吗?
演示jsFiddle此处
第二个由data()
键入为number
由于split()是一个字符串方法,它抛出了错误。
简单修复:
var maskValue = "" + $(this).data('mask');
或
var maskValue = $(this).data('mask').toString();
将.data('mask')
更改为.attr('data-mask')
。出于某种原因,现在对我来说很好。。。也许jQuery版本相关?
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Jquery未定义函数正在停止其他操作
- AngularJS指令出错-无法读取属性'编译'的未定义
- 这.SOMETHING 总是返回未定义的 - extjs
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- js/jquery;未定义,执行顺序