[JS] Sizzle nie pobiera elementów


(grizz) #1

(Pablo_Wawa) #2

Uwagi tak na szybko:

  1. Dlaczego przy klasach i href stosujesz pojedyncze cudzysłowy? Standard HTML przewiduje używanie podwójnych ("") - dla id robisz to dobrze.

cecha1 = $('.cecha1');

    ...

  alert(Sizzle(".cecha1")[0]);

Dwa razy wywołujesz Sizzle(’.cecha1’), bo przypisałeś $=Sizzle przecież. Użyj

alert(cecha1[0]);

i w dalszych wywołaniach tak samo (może nie poprawi błędu, jeśli gdzieś indziej jest, ale przyspieszy i skróci kod). 3. Poza tym masz błąd w funkcji cecha1Click() - powinno być cecha1 zamiast cecha_:_

function cecha1Click() {

  for (var i = 0; i < cecha1.length; i++) {

    cecha1[i].className = "";

  }

4. Używaj w Firefoksie narzędzia Dla twórców witryn -> Konsola błędów (dostępnego z menu Narzędzia), wyczyść log i sprawdź po wczytaniu strony czy coś się nie pokazało (błąd, ostrzeżenie).


(grizz) #3
  1. Strona jest “generowana” przez PHP, nie byłem pewny, jak się wstawia cudzysłowy w stringu, to dałem apostrof, zapomniałem, że muszą być cudzysłowy :frowning:

  2. Wiem, że raz jest $ a raz Sizzle, ale myślałem, że coś nie tak robiłem i spróbowałem i tak i tak.

  3. Thx :smiley:


(Pablo_Wawa) #4

Ale czy to coś pomogło w rzeczonej sprawie?


(grizz) #5

(Pablo_Wawa) #6

Już chyba wiem, gdzie masz błąd. Użycie _ window.onload _ jest niepoprawne. Przerób wiersz

window.onload = (function(){

na taki:

window.onload = function(){

oraz wiersz

})();

na

};

A błąd powstał zapewne przy przeróbce podobnego kodu dla jQuery (ale tam jest używana funkcja ready()), a polegał na tym, że do window.onload był przypisywany wynik działania napisanej funkcji (return false), a nie sama funkcja i kod tej funkcji wykonywał się zaraz po wczytaniu skryptu JS, kiedy jeszcze się nie wczytała i nie zbudowała treść dokumentu (i dlatego otrzymywałeś pustą tablicę).


(grizz) #7

Dzięki :smiley: Działa!

Dodane 30.07.2013 (Wt) 19:45

A można wrzucić dane z JSONa do tablicy asocjacyjnej, jak w PHP? czyli żeby pobierać dane np. json[“nazwa”]