Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z działaniem funkcji w pętli [JS]
Forum PHP.pl > Forum > Przedszkole
Tasilvar
Witam. W celu uproszczenia sobie kodu posłużyłem się pętelką for odwołując się wcześniej do powyższych tablic. Funkcją alert sprawdzałem jej poprawność po wyrzuceniu linijki z deklaracją funkcji i pętla działała poprawnie, jednak w moim zamierzeniu konieczna jest obecność tej funkcji.

oto fragment kodu:
  1.  
  2. var test_1 = document.getElementById('block_test');
  3.  
  4. // zmienne
  5.  
  6. var color_black = document.getElementById('black');
  7. var color_white = document.getElementById('white');
  8. var color_red = document.getElementById('red');
  9. var color_blue = document.getElementById('blue');
  10. var color_yellow = document.getElementById('yellow');
  11. var color_green = document.getElementById('green');
  12.  
  13.  
  14. // tablice
  15.  
  16. var color_tab = new Array("black","white","red","blue","yellow","green");
  17.  
  18. var colors_css = new Array("#000000","#fffffff","#c6010a","#3331d2","#fbcc04","#286843");
  19.  
  20. for(var i=0;i<=color_tab.length-1;i++) {
  21.  
  22. color_tab[i].onclick = color_tab[i];
  23.  
  24. function color_tab[i] () { // jeżeli to wywale pętla się wykona
  25.  
  26. test_1.style.background = colors_css[i];
  27.  
  28. alert("wykonane");
  29. }// // jeżeli to wywale pętla się wykona
  30.  
  31. }


Pytanie z mojej strony, jaki błąd popelniłem przy twrzoeniu funkcji w pętli z wykorzystaniem indeksów tablicy?
Czekam na odp.
nospor
Funkcje nie mogą być tablicami.
Napisz może słownie co kombinujesz
Tasilvar
Generalnie to chciałem sobie uprościć kod, zamiast
  1. // paleta kolorów
  2. //
  3.  
  4. var test_1 = document.getElementById('block_test');
  5.  
  6. var color_black = document.getElementById('black');
  7. var color_white = document.getElementById('white');
  8. var color_red = document.getElementById('red');
  9. var color_blue = document.getElementById('blue');
  10. var color_yellow = document.getElementById('yellow');
  11. var color_green = document.getElementById('green');
  12.  
  13. color_black.onclick = black;
  14. color_white.onclick = white;
  15. color_red.onclick = red;
  16. color_blue.onclick = blue;
  17. color_yellow.onclick = yellow;
  18. color_green.onclick = green;
  19.  
  20. function black() {
  21. test_1.style.background = "#000000" ;
  22. }
  23. function white() {
  24. test_1.style.background = "#ffffff" ;
  25. }
  26. function red() {
  27. test_1.style.background = "#c6010a" ;
  28. }
  29. function blue() {
  30. test_1.style.background = "#3331d2" ;
  31. }
  32. function yellow() {
  33. test_1.style.background = "#fbcc04" ;
  34. }
  35. function green() {
  36. test_1.style.background = "#286843" ;
  37. }



chciałem stworzyć petlę która by pobierała kolejne indeky z tablicy i przypisywała im kolory które byłyby w tablicy. Chciałem też aby pętla sama tworzyła zmienną pobierając tylko do nazwy na która składałaby się stała "color_" przyrostek wartości indeksu tablicy (jednak tu także brak efektu).
nospor
Przy dołączonym jQuery:
Zakładam że te black, green. to są divy

  1. <div class="color" id="black" color="#000000"></div>
  2. <div class="color" id="whie" color="#ffffff"></div>

Kod
jQuery('.color').click(function(){
jQuery('#block_test').css('background-color',jQuery(this).attr('color'));
});

I już. Pisane z palca więc mogą być drobne błędy
Tasilvar
zgadza się, a czy nie będe musiał powtarzać tego kodu przy każdy inny kolorze? btw. przy jQuery się jeszcze nie bawiłem.
nospor
No a czy ja tu jakiś kod powtórzyłem? Funkcja leci po klasie 'color'. Jedyne co musisz pamiętać by dla divów nadawać klasę 'color' oraz atrybut color. Reszta pójdzie automatycznie
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.