Javascript 未捕获类型错误:无法读取属性';1';空的
我收到一个错误:未捕获的TypeError:无法读取空源的属性“1”:X.push(检查[1]) 有什么问题 wspolrzedne.value=文本区域中键入的文本,如:“2.4 5 1 67 15 67” 所以,问题可能是因为钛不安全的字符串与\n作为新的线Javascript 未捕获类型错误:无法读取属性';1';空的,javascript,android,titanium,Javascript,Android,Titanium,我收到一个错误:未捕获的TypeError:无法读取空源的属性“1”:X.push(检查[1]) 有什么问题 wspolrzedne.value=文本区域中键入的文本,如:“2.4 5 1 67 15 67” 所以,问题可能是因为钛不安全的字符串与\n作为新的线 var coordinates = wspolrzedne.value.split( "\n" ); var X = []; var Y = []; for( var i = 0; i < coordi
var coordinates = wspolrzedne.value.split( "\n" );
var X = [];
var Y = [];
for( var i = 0; i < coordinates.length; ++i ) {
var check = coordinates[ i ].match( /^([0-9]+.[0-9]*) ([0-9]+.[0-9]*)$/ );
if( check == false) {
var zlewspolrzedne = Ti.UI.createAlertDialog({
title: "Niew?a?ciwe wspó?rz?dne: " + coordinates[ i ],
buttonNames: ['Popraw'],
cancel: 0
});
zlewspolrzedne.show();
}
X.push( check[ 0 ] );
Y.push( check[ 1 ] );
}
var坐标=wspolrzedne.value.split(“\n”);
var X=[];
变量Y=[];
对于(变量i=0;i这是因为textArea
不关心换行符,它只是一个简单的空白。因此,解决方案是通过“
”进行拆分,然后对每两个进行concat(或者将每一对直接馈送到check数组,并动态检查它们的内容)
编辑:
好的,问题是这一行:
var check = coordinates[ i ].match( /^([0-9]+.[0-9]*) ([0-9]+. [0-9]*)$/ )
它只分配一个值而不是两个值。您预计字符串中出现的\n
在哪里?很明显,您的正则表达式与完整字符串不匹配。仅供参考,您可以使用正则表达式上的m
修饰符将^
和$
重新定义为匹配行的开始和结束,而不是字符串的开始和结束……如果检查
为空,那么我不知道为什么它不会抱怨索引0
。缺少某些内容。我在示例中忘记了输入。我在每行的文本区域中键入2个数字我确信这段代码在正常的js中工作你的意思是你可以将它们与“\n”匹配?好的,所以问题是这行:var check=coordinates[i]。match(/^([0-9]+[0-9]*)([0-9]+[0-9]*)/)它只分配一个值,而不是两个值。