Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Problem z instrukcją warunkową
Forum PHP.pl > Forum > Przedszkole
rummer
Witam Mam problem z kodem sprawdzającym czy tablica zawiera szukany element.

Mam takie przykładowe dane z pliku JASON:

[{"id":"10","ean":"12345"},{"id":"11","ean":"6666"}]

A to kod JS:
  1. <!DOCTYPE html>
  2. <p id="demo"></p>
  3. <p id="demo1"></p>
  4.  
  5. var obj, dbParam, xmlhttp, myObj, x, obj,txt = "",er="nie znaleziono";
  6.  
  7. dbParam = JSON.stringify(obj);
  8. xmlhttp = new XMLHttpRequest();
  9. xmlhttp.onreadystatechange = function() {
  10.  
  11. myObj = JSON.parse(this.responseText);
  12.  
  13. for (var i = 0; i < myObj.length; i++) {
  14. if (myObj[i].ean === '6666') {
  15. obj = myObj[i];
  16.  
  17. break;
  18. }
  19. }
  20.  
  21.  
  22. if(typeof obj['ean'] === "undefined"){
  23. document.getElementById("demo1").innerHTML = er;
  24. }else
  25. {
  26. document.getElementById("demo").innerHTML = obj.id;
  27.  
  28. }
  29. };
  30. xmlhttp.open("POST", "testphp.php", true);
  31. xmlhttp.send("x=" + dbParam);
  32. </body>
  33. </html>

W tym przykładzie kod działa prawidłowo, jak nie szuka się nieistniejących danych to kod nie wyświetla er. Podpowie ktoś gdzie popełniłem błąd? A może można ten kod napisać lepiej?
trueblue
Zmienna obj nie jest zdefiniowana przy nieznalezieniu wartości w tablicy.
Zaglądaj w konsolę przeglądarki.
rummer
No fajnie ,ale cały czas mi to nic nie mówi facepalmxd.gif
trueblue
Jaką wartość ma zmienna obj sprawdzana w linii 25?
rummer
6666
trueblue
A jeśli szukasz 555?
rummer
ok,chyba rozumiem do czego zmierzasz. Ale jeśli szukana wartość była by inna to powinno wykonać drugą operację. Jakąkolwiek
trueblue
Jeszcze raz przeczytaj mój pierwszy post w tym temacie.
rummer
Sorry za moją tępotę,ale nie ogarniam js'a. Staram się go nauczyć,ale z marnym skutkiem. Będę musiał poradzić sobie z tym przy pomocy php. Choć troszkę skomplikuje mi to plany. Tak czy siak dziękuję za próbę pomocy
nospor
Skoro w js nie ogarniasz czegos takiego jak brak zdefiniowanej zmiennej, pomimo ze trueblue dzielnie o to walczyl, to i w php nie zrozumiesz co to brak zdefiniowanej zmiennej.
Ponadto blad o tym masz w konsoli js o czym rowniez ci wspomniano ale oczywiscie tez nie raczyles tam zajrzec.

Wracajac do problemu:
Zamiast

if(typeof obj['ean'] === "undefined"){

daj poprostu

if(!obj){

Zmienna obj w przypadku braku znalezienia danych, nie byla okreslona, nieprawdaz?
rummer
Dzięki za odpowiedź.
Ale nie musisz być nieuprzejmy.Każdy kiedyś zaczyna i musi się nauczyć.Nie każdy wchłonął JS'a z mlekiem matki.
nospor
Napisalem, ze niezaleznie czy js czy php, to bedziesz mial ten sam problem skoro nie rozumiesz co to znaczy "niezdefiniowana" zmienna. A napisalem tak dlatego, ze chciales swoj problem rozwiazac w php skoro w js nie mogles. Jesli to dla ciebie jest bycie nieuprzejmym to twoj problem.

Dla mnie bycie nieuprzejmym to skolei:
1) Ignorowanie to co do ciebie mowia, np. powiedziano ci bys zajrzal do konsoli bledow js, czego nie uczyniles. Jakbys to zrobil, to bys dostal blad czarno na bialym
2) Moglbym sie jeszcze przyczepic o sprawdzanie linii 25 jak cie proszono, ale juz nie bede wink.gif
3) Nie przydzielanie ludziom POMOGL za to, ze pomogli. Zrobie to za ciebie tongue.gif

Takze to skolei jest dla mnie bycie nieuprzejmym. Ale to juz moj problem wink.gif
rummer
Jak dobrze widzę to jest dział przedszkole! Więc dział gdzie się właśnie zadaje takie pytania. Mówiąc nieuprzejmy miałem na myśli Twój sardoniczny ton. To, że ktoś się uczy i nawet jak zadaje głupie pytania to nie powód by w taki sposób odpowiadać. No chyba, że lubisz łechtać w ten sposób swoje ego. Ale to raczej nie jest rola moderatora, chyba że na tym forum macie takie standardy.
Na koniec a pro po tych deklaracji zmiennych i zarazem moje ostatnie słowa. Nie ma sensu dalej rozmawiać.
  1. $string="^#&N}i?!g5dy8 n^i(&e *s1i24ł@6u0j) s724i8ę0+ z0e& ś/5w*=i1n[i~ą.: 423}O@46bo732]je% 3b34^ę$&>dz82434ie5_+ci$2343e2 b&@r%u^324d{7n6i,7 9a0 ś7w%42i5n(4ię42 t83o@ b$^ę546d7z89:ie 3c5i4566e7s8(#z9yć.–$567 G&#e4or6{ge B(><ern5a56rd (*Sh%aw";
  2. $qqq=preg_replace('/[^A-Za-zćłśę,.\- ]/', '', $string);
nospor
Stwierdzilem jedynie, ze skoro w js tego nie rozumiesz to nie ma sensu sie przenosic na php bo to nic nie zmieni. I zaraz potem podalem ci jak to zrobic w js. Ale widze trafilem na pana "wrazliwego".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.