2013-07-01 45 views
6

Im nhận được lỗi: Loại lỗi không được thực hiện: Không thể đọc thuộc tính '1' của null Nguồn: X.push (kiểm tra [1]);Loại không bắt buộcLỗi: Không thể đọc thuộc tính '1' của null

sự cố là gì?

wspolrzedne.value = text gõ vào textArea như thế: "2.4 5 1 67 15 67"

Vì vậy, có lẽ vấn đề là becouse titan không an toàn mà chuỗi với \ n dòng như mới?

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 ]);  

    } 
+0

Bạn dự đoán '\ n' xuất hiện trong chuỗi ở đâu? Rõ ràng regex của bạn sẽ không khớp với chuỗi đầy đủ. FYI, bạn có thể sử dụng công cụ sửa đổi 'm' trên regex để xác định lại'^'và' $ 'làm khớp đầu và cuối của một dòng thay vì bắt đầu và kết thúc chuỗi. –

+0

... và nếu 'check' là null, thì tôi không biết tại sao nó sẽ không phàn nàn về chỉ mục' 0'. Một cái gì đó còn thiếu. –

+0

tôi quên mất việc nhập vào trong ví dụ của mình. im gõ vào textarea 2 số trong mỗi dòng – lol2x

Trả lời

2

Điều này là do textArea không quan tâm về linebreaks, chỉ là một khoảng trắng đơn giản của nó. Vì vậy, giải pháp là để chia cho '' và sau đó concat mỗi hai trong số họ (hoặc thức ăn mỗi cặp trực tiếp vào mảng kiểm tra và kiểm tra nội dung của họ trên bay).

Edit:

Ok, vậy vấn đề là dòng này:

var check = coordinates[ i ].match(/^([0-9]+.[0-9]*) ([0-9]+. [0-9]*)$/) 

Nó gán chỉ có một giá trị thay vì hai.

+0

Tôi đã kiểm tra xem, textArea gửi linebreaks để chính xác. – lol2x

+0

bạn có nghĩa là bạn có thể đối sánh chúng với "\ n"? –

+0

chính xác tôi có thể làm điều đó, nhưng những thứ khác không hoạt động. :/ – lol2x

Các vấn đề liên quan