Javascript 对象在循环中运行时未定义,但在顺序执行时未定义

Javascript 对象在循环中运行时未定义,但在顺序执行时未定义,javascript,jquery,maskedinput,Javascript,Jquery,Maskedinput,我使用设置所有输入元素,其中数据掩码属性定义为属性掩码值: 鉴于此html: <input type='text' id="a" data-mask='999?999' /> <input type='text' id="b" data-mask='999' /> 第二次迭代抛出一个错误:“UncaughtTypeError:undefined不是一个函数”,在这一行上说“split”没有定义 firstNonMaskPos = null, $.each(mask.sp

我使用设置所有输入元素,其中数据掩码属性定义为属性掩码值:

鉴于此html:

<input type='text' id="a" data-mask='999?999' />
<input type='text' id="b" data-mask='999' />
第二次迭代抛出一个错误:“UncaughtTypeError:undefined不是一个函数”,在这一行上说“split”没有定义

firstNonMaskPos = null, $.each(mask.split(""), function(i, c) {
然而,这段代码工作得很好,掩码设置没有问题

$('#a').mask('999?999');
$('#b').mask('999');
有人能解释一下这种奇怪的行为吗


使用
.attr('data-mask')
更改
.data('mask')
。因为某种原因,现在对我来说很好。。。可能与jQuery版本有关?

第二个版本由
data()键入为
number

因为split()是一个字符串方法,所以它会抛出错误

简单修复:

var maskValue = "" + $(this).data('mask');

var maskValue = "" + $(this).data('mask');
 var maskValue =  $(this).data('mask').toString();