Javascript 未捕获类型错误:无法读取属性';1';空的

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

我收到一个错误:未捕获的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 < 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]*)/)它只分配一个值,而不是两个值。