getElementById i jego parametr

0

Witam.
Pytanie dotyczy funkcji getElementById('id') i funkcji jej podobnych. Czy jest jakiś sposób aby jako parametr w nich podawać zmienną? Mam kod z kilkoma funkcjami, które są do siebie bardzo podobne. Gdyby znalazł się taki sposób to mógłbym około 2/3 powtarzającego kodu wywalić :)

0

To chyba norma w programowaniu, że nie musisz podawać wartości do funkcji na sztywno w kodzie? :/

Pokaż co chcesz robić, bo zadajesz pytanie w stylu "czy można napisać program, żeby komputer dodawał 2+2 czy trzeba to zawsze robić sobie na kartce?" o.O

0

Gdy np napiszę:

function funkcja() {
   var a = document.getElementById('folder');
   ...
}

to wszystko dobrze działa. Jednak gdy zmienie na:

function funkcja(zmienna) {
   var a = document.getElementById("'"+zmienna+"'");
   ...
}

to dostaję info w konsoli, że a jest puste, czyli skrypt nie potrafi odnaleźć takiego sklejanego id. Mam u siebie takich funkcji 8, w których środkowa część linku się zmienia. Gdybym mógł ją podać w parametrze to mógłbym zamiast tych 8 zrobić jedną uniwersalną funkcję.

1

Podając tekst otaczasz go w cudzysłowy czyli np: 'folder', ale skrypt widzi tam tekst folder - cudzysłowiami tylko ograniczasz tekst, żeby było jasne, co jest tekstem, a co już np: zamknięciem nawiasu będącym częscią kodu.
W Twoim drugim kodzie przekazujesz w tekście pojedynczy cudzysłów (otaczasz go podwójnym cudzysłowiem, żeby było wiadomo gdzie początek, a gdzie koniec), doklejasz do tego zawartość zmiennej, oraz doklejasz kolejny cudzysłów - w efekcie skrypt szuka zmiennej o ID 'zmienna' -- gdzie cudzysłów jest fragmentem nazwy ID.

Cholera, to nawet ciężko wytłumaczysz, ale to są podstawy składni języka, nie wiem jak mogłeś dotrzeć do tworzenia funkcji o.O

W skrócie:

function funkcja(zmienna) {
   var a = document.getElementById(zmienna);
   ...
}
0

No tak, to jest jasne :)
Trochę namieszałem ale już poprawiam.

Mam taką funkcję:

function nast(zmienna) {
	var a = document.getElementById(zmienna+"1"); 
	var adres = a.getAttribute('src');                          
	var dl = adres.length-5;
	var nr = adres.charAt(dl);
	if (nr<3) {
		nr++;
		var nowy_src = "images/" + zmienna + "_" + nr + ".png";
		a.setAttribute('src', nowy_src);
	}
	else {
		nr = 1;
		nowy_src = "images/" + zmienna + "_" + nr + ".png";
		a.setAttribute('src', nowy_src);
	}
}

document.getElementById('nast_foto').addEventListener('click', function() {
   nast(foto);
}, false);

Czyli jest na stronie div, w tym divie siedzi zdjęcie, które ma id foto1. Po naciśnięciu buttonu, zdjęcie się zmienia na kolejne i tak w kółko (zdjęcia mają nazwy: foto_1.png, foto_2.png, foto_3.png). Jeśli robię tak jak jest powyżej to w tej chwili mówi mi, że zmienna adres jest pusta. id nast_foto to button, który wciskamy aby zmienić na następne zdjęcie.

1

Niestety nie wiem skąd u Ciebie bierze się zmienna foto i co zawiera, a przekazujesz ją dalej.
Podaj też kawałek kodu HTML, a najlepiej to już przygotuj wycięty i działający fragmencik kodu HTML i JS i wrzuć na jsbin.com :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1