Utworzyłem element "newItem" (<h3>Water</h3>). Chciałbym go wstawić przed każdym bezpośrednim dzieckiem "div.facetwp-facet-tags" z klasą "facetwp-checkbox". Robię więc pętlę forEach, która za pomocą "insertBefore" wkleja ten "newItem" przed każdym "https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore", czyli zmiennej "element" w tym przypadku. Czy ten tok myślenia jest dobry? Jeżeli tak, to dlaczego to nie działa? Pojawia się: "TypeError: list.insertBefore is not a function".
https://codepen.io/rudolph-reti/pen/QWbJQJr
Komunikat bledu chyba dosc jasno nakierowuje....
list to twoja lista nie element. Element masz w paramatrze funkcji
list.forEach(function(element, index, array) {
element.insertBefore(newItem, element);
});
edit: zas w dokumentacji widze ze to maby rodzic na ktorym jest wykonywany insertBefore wiec
tuMaBycRodzic.insertBefore(newItem, element);
Dzięki. Błąd zniknął, ale to insertBefore nie działa tak jak oczekiwałem. Nie wkleja "newItem" przed każdym elementem listy, tylko przed tym, na którym zatrzymuje się pętla. Co zrobić, żeby wkleić "newItem" przed każdym elementem listy?
Hehe, to dlatego ze zawsze wkladasz dokladnie ten sam element
newItem
I on wedruje pokolei z listy do listy
Albo w petli tworz za kazdym razem nowy element do wlozenia, albo go klonuj
Dzięki. A jak to zrobić? Nie mam kompletnie żadnego pomysłu (nawet na to co wpisać do googla).
no toz napisalem co masz zrobic.... masz za kazdym razem tworzyc nowe element do wlozenia
Dziękuję Ci, bardzo mi pomogłeś.
Zastanawia mnie jedna rzecz. Nie wiem czy poprawnie formułuję to pytanie: dlaczego gdy w pętli deklarowana jest zmienna nie pojawia się błąd redeklaracji?
Bo ona nie jest deklarowana w petli tylko w funkcji. A to roznica
OK, więc żeby lepiej zrozumieć o co tutaj chodzi, to powinienem przestudiować dobrze temat "zakres zmiennych", zgadza się?
Deklarowana zmienna w funkcji to zmienna lokalna tylko dla tej funkcji.
Ale nawet jakby to nie bylo funkcja tylko petla jak myslales, to i tak to by nie wywolalo bledu. js pozwala na wielokrotne deklarowanie tych samych zmiennych. js nawet pozwala na wielokrotne deklarowanie tych samych funkcji. Ot nowa zmienna/funkcja nadpisze stara. To nie php
OK, ale jak się robi redeklarację poza funkcją to wyskakuje błąd. Dlaczego tak jest?
To pokaz sytuacje z takim bledem, bo ja nie raz w petli redeklarowalem zmienne i bylo wszystko ok
Sorry, nieprecyzyjnie się wyraziłem. Nie chodziło mi redeklarację w pętli. Mam zadeklarowane jakieś zmienne poza funkcjami. Uruchamiam kod w konsoli i wszystko gra. Gdy chcę go uruchomić po raz drugi pojawia się błąd redeklaracji. Jest to wkurzające, bo muszę odświeżać przeglądarkę albo wykomentować zmienne, żeby ponownie uruchomić kod.
Przepraszam, nie rozumiem co piszesz.
Zrobilem teraz test:
var ala = 2;
var ala = 4;
alert(ala);
I zadnego bledu tylko alert wyswietla mi 4, czyli tak jak mowilem, ze nastepna deklaracja nadpisuje poprzednia
spróbuj proszę z letami i constami
Skoro uzywasz CONSTow znaczy, ze uzywasz tez es6. No tam sytuacja jest inna. Tak, tam nie mozesz sobie zadeklarowac kilka razy tej samej zmiennej ot tak (nie liczac rzecz jasna petli i funkcji bo one sa traktowane inaczej)
OK. No więc właśnie dlatego m.in. miałem problem z tym skryptem. Myślę, że temat zamknięty. Dziękuję bardzo i pozdrawiam.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)