pobieranie i wstawienie nazwy klazy z tablicy do funkcji

pobieranie i wstawienie nazwy klazy z tablicy do funkcji
BJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Cześć jestem tu nowy i proszę o wyrozumiałość.
Chce pobrać nazwę klasy z tablicy i wstawić ją w funkcji za pomocą pętli, ale w taki sposób uzyskuje tylko przypisanie do pierwszej wartości z tablicy.
(nie ma znaczenia rodzaj pętli i tak zawsze pobierana jest tylko pierwsza wartość tablicy.
Czy mogę prosić o poradę co robię źle i jak powinienem zrobić to prawidłowo ?

var nr=0;
do{

var h =[".hero" , ".hero1" , ".hero2"];
$(h[nr]).click(function(){ ...

HA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 335
0

Podstawowe pytanie - do czego to ma służyć (szczegółowo). Może da się to napisać ogólnie lepiej niż tu.

BJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0
hapertown napisał(a):

Podstawowe pytanie - do czego to ma służyć (szczegółowo). Może da się to napisać ogólnie lepiej niż tu.

Kliknięcie na img o określonej klasie ma spowodować wyświetlenie treści przypisanej do zdarzenia w funkcji.
Np: klikam w img o klasie "hero1" i chce by to wywołało funkcje powiązaną z tą klasą.
Pętla powoduje podstawienie numeru z tablicy w której są wszystkie klasy z img
img też mają być docelowo w pętli gdzie zmienna będzie podstawiona tylko po nazwie klasy "hero"+zmienna i src="obrazek"+zmienna+".jpg"
Docelowo tych dnośników ma być ponad 80

HA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 335
0

Ok, koncepcję mniej więcej rozumiem - a czy mógłbyś przedstawić ogólnie co zamierzasz tym osiągnąć, tzn chodzi mi co próbujesz w ten sposób utworzyć, tworzysz jakiś system czy coś?

Tak na szybko nie patrząc na poprawność wykonania kodu to byłoby coś w ten deseń:

Kopiuj
function function1(); // twoje funkcje
function function2(); // twoje funkcje
function function3(); // twoje funkcje

// tablica asocjacyjna z klasami i funkcjami
var functions={'classname1':'function1','classname2':'function2','classname3':'function3'};

// pętlowanie obrazków
$("img").each(function()
{
	_class=$(this).attr('class'); // pobranie nazwy klasy
	_function=[functions[_class]](); // wywołanie funkcji z tablicy na podstawie nazwy klasy
});
BJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Chce zrobić strone na której można sprawdzić statystyki postaci z gry (vainglory) oraz tego jak te statystki zmieniają się po zakupieniu różnych przedmiotów.
Taka typowa strona z buildami do postaci.
zrobiłem już wersję tej funkcji bez pętli która miałaby pobierać nazwy klasy z tablicy i wszystko jest ok natomiast gdy chcę zrobić pętle to podstawia się tylko pierwsza nazwa klasy.
Myślę że ma to jakiś z pętlą bo gdy przypisuje docelowo pod zmienną nr=1; to po kliknięciu na obrazek o klasie "hero1" funkcja się uruchamia.

var nr=1;
var h =[".hero" , ".hero1" , ".hero2"];
$(h[nr]).click(function(){ ...

HA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 335
0

A no bo nr to zmienna która odwoła się do indeksu nr 1 w tablicy czyli drugiej komórki. Jak chcesz to zrobić w pętli to musisz użyć for(i=0 do ilości obrazków albo przepętlować img tą funkcją o której wspominałem $("img").each(function(x,y){ gdzie x będzie działał jak i w pętli for.

BJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

dalem zakonczenie petli nr=2 ale rownie dobrze moglbym wpisac "h.length" nic to nie zmienia.
pętla nadal wykonuje swoje zadanie tylko gdy klikam w pierwszy odnośnik.
Czy poniżej jest jakiś błąd ?

Kopiuj
 for (var nr=0; nr==2; nr++);
    {  
     var h =[".hero" , ".hero1" , ".hero2"];
    $(h[nr]).click(function(){
       
        skarfSila = 111;
        var x = document.getElementsByClassName("wartosc");
        x[0].textContent = skarfwartosc;
        var x = document.getElementsByClassName("postac");
        x[0].textContent = "skarf";
        
        $(".postac").addClass("dots")
        $(".wartosc").addClass("dots")
      	
         alert(nr);
      
});
   }
HA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 335
0

Masz błąd w pętli, powinno być for(nr=0;nr=2;nr++). Zrobiłeś porównanie z cyfrą 2 a nie przypisanie do zmiennej

BJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

[edit]
ok już wszystko działa.
idealnie do tego pasuje pętla ** for in**

Kopiuj

h = Array(".hero" , ".hero1" , ".hero2");
 for (var nr in h);
    {  
     
    $(h[nr]).click(function(){

zmodyfikowałem kod w pętli bo coś mi w nim nie pasowało i juz wszystko działa. Dziękuje za pomoc i zainteresowanie problemem :) Pozdrawiam !

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.