2013-07-01 19 views
6

Otrzymuję błąd: Uncaught TypeError: Nie można odczytać właściwości "1" o wartości null Źródło: X.push (sprawdź [1]);Uncaught TypeError: Nie można odczytać właściwości "1" o wartości zerowej

na czym polega problem?

wspolrzedne.value = tekst wpisany w textarea tak: "2.4 5 1 67 15 67"

Więc może problem jest poniewaz tytanu nie jest bezpieczne, że łańcuch znaków \ ​​n jako nowej linii?

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

Gdzie przewidujesz pojawienie się '\ n' w ciągu znaków? Najwyraźniej twoje wyrażenie regularne nie będzie zgodne z pełnym ciągiem znaków. FYI, możesz użyć modyfikatora 'm' w regex, aby ponownie zdefiniować'^'i' $ 'jako dopasowanie początku i końca wiersza zamiast początkowego i końcowego łańcucha. –

+0

... a jeśli 'check' ma wartość null, to nie wiem, dlaczego nie narzekałoby na indeks' 0'. Czegoś brakuje. –

+0

Zapomniałem o wpisaniu w moim przykładzie. im wpisanie w textarea 2 numery w każdej linii – lol2x

Odpowiedz

2

To dlatego textArea nie dba o linebreaks, jej tylko prostego spacje. Rozwiązaniem jest podzielenie przez '', a następnie konkatowanie każdego z nich (lub podanie każdej pary bezpośrednio do tablicy sprawdzania i sprawdzenie ich zawartości w locie).

Edit:

Ok, więc problem jest to linia:

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

Przypisuje tylko jedną wartość, zamiast dwóch.

+0

Sprawdziłem, czy textArea wysyła linebreaks tak, że jest poprawna. – lol2x

+0

masz na myśli, że możesz dopasować je do "\ n"? –

+0

dokładnie mogę to zrobić, ale inne rzeczy nie działają. :/ – lol2x

Powiązane problemy