![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Mam problem z eventem click na buttonie, ktory jest w pętli. Tu fragment kodu (coffee script)
Za kazdym razem wyswietla mi value ostatniego buttona zamiast kolejnych. Wiecie jak to obejsc? Pozdrawiam -------------------- O! Zimniok :P
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
console.log(button.val())
Poniewaz wartosc button jest nadpisywana w petli i na jej koncu zawiera wartosc ostatniego elementu ktory byl do niej przypisany -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
A do jakiego to kodu jest kompilowane? Bo wygląda tak, jakby button był wyciągnięty poza pętlę (CS to lubi) i tym samym każda iteracja ją nadpisuje. W czystym JS po prostu zawartość pętli otacza się w IIFE. W nowym JS (ES6) po prostu wystarczyłoby zadeklarować button przez słowo kluczowe let, a nie var wewnątrz pętli.
-------------------- ★Mój blog || Okiem krytyka★
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
console.log(button.val()) Poniewaz wartosc button jest nadpisywana w petli i na jej koncu zawiera wartosc ostatniego elementu ktory byl do niej przypisany Tak, tego się domyśliłem, ale nie jest to u mnie porządane zachowanie @Comandeer
Ten post edytował MateuszS 16.09.2015, 13:13:41 -------------------- O! Zimniok :P
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czemu nei zrobisz poprostu:
console.log(this.value); ? Przeciez pod this masz aktualny element -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Czemu nei zrobisz poprostu: console.log(this.value); ? Przeciez pod this masz aktualny element Ajj moja pomyłka, miał być console.log(shelf.getId()). Z buttonem owszem this działa ale shelf jest nadpisywany. -------------------- O! Zimniok :P
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
shelf = shelfs[index];
To jest zmienna globalna i poraz kolejny nadpisywana. sprobuj: var shelf = shelfs[index]; //zmienna lokalna -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem zmienić to w .js i to też nie pomogło:
Niestety coffee script wyrzuca mi zawsze deklaracje zmiennych "piętro" wyżej i nie bardzo wiem czy da się to jakoś przestawić. Ale tak czy siak niestety nie pomaga. //edit, moze daloby sie jakos przez parametr clicka przeslac tego shelfa? Bo pewnie onClick w inpucie by przeszlo ale nie jest to eleganckie, moze jakis trigger wywolam z parametrem? Ten post edytował MateuszS 16.09.2015, 13:40:37 -------------------- O! Zimniok :P
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
chcesz tylko dobrac sie do tego ID? To dopisuj go jako atrybuj dla inputa i pobieraj na podobnej zasadzie co this.value. I po sprawie
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Kod for (index in shelfs) { (function(shelf) { var content = 'Empty shelf ' + shelf.getId(); $(this).append('<input type="button" style="width: 100%; height: 40px" class="input_button" value="' + content + '" /><br />'); var button = $(this).find('input').last(); var parent = $(this); button.click(function() { console.log(console.log(shelf.getId()); }); }(shelfs[index])); } ? -------------------- ★Mój blog || Okiem krytyka★
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
chcesz tylko dobrac sie do tego ID? To dopisuj go jako atrybuj dla inputa i pobieraj na podobnej zasadzie co this.value. I po sprawie ten shelf jest obiektem, czasami bede potrzebowal rzeczy z "wyzej". Obiektu nie zapisze do atrybuta bez jakiejs serializacji a to chyba nie jest dobre rozwiazanie. Fajnie byloby tego clicka wywolac jakos z parametrem cos jak w onClick Kod for (index in shelfs) { (function(shelf) { var content = 'Empty shelf ' + shelf.getId(); $(this).append('<input type="button" style="width: 100%; height: 40px" class="input_button" value="' + content + '" /><br />'); var button = $(this).find('input').last(); var parent = $(this); button.click(function() { console.log(console.log(shelf.getId()); }); }(shelfs[index])); } ? to kod JSowy, jak to zapisac w coffee? To zadziala? -------------------- O! Zimniok :P
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ten shelf jest obiektem, czasami bede potrzebowal rzeczy z "wyzej" To zapisuj index tego obiektu z tablicy. I po sprawie. Mnozysz problemy ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
https://realguess.net/2014/03/03/immediatel...n-coffeescript/ → tak by to wyglądało w CS.
-------------------- ★Mój blog || Okiem krytyka★
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
https://realguess.net/2014/03/03/immediatel...n-coffeescript/ → tak by to wyglądało w CS. No wlasnie nie za dobrze mi kompiluje. Początek się zgadza (shelf) -> natomiast mam problem z przekazaniem argumentu. Gdy wklepię kod na sztywno do JS to wywala mi Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined -------------------- O! Zimniok :P
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Prawdę mówiąc nie bardzo wiem czego ten błąd dotyczy… Czyżby chodziło o $.fn.append?
-------------------- ★Mój blog || Okiem krytyka★
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:06 |