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ć :)
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
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ę.
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);
...
}
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.
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 :)