[js] wyswietlanie informacji w zaleznosci od parametru

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
tatu
Nowy
Nowy
Posty: 89
Rejestracja: śr lut 09, 2005 1:58 pm

[js] wyswietlanie informacji w zaleznosci od parametru

Post autor: tatu »

Witam,
z trudem udalo mi sie napisac taki skrypt:

Kod: Zaznacz cały

function language() {

				var tmp = document.getElementById("tmp").value;

				var jezyk = tmp ;

				switch(jezyk){

				case 'PL' :

				document.getElementById("jezyk").value ="polski";

				break;

				case 'EN' :

				document.getElementById("jezyk").value ="angielski";

			}

		}
/* oraz */
<input id="tmp" name="tmp" disabled="disabled" type="text" value="$lang"/>
mam pytanie, jak go przerobic, zeby podmiana jezyka dzialala nie tylko dla pierwszego elementu input na liscie, ale dla wszystkich? teraz dziala, tylko jesli wszystkie elementy input listy maja taka sama wartosc.
Z gory dziekuje za pomoc i pozdrawiam
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: gorylek »

Witam,
Rozumie że chce Pan by dla wszystkich elementów input działał ten skrypt.

1. Nie wiem czy to zadziała bo tego nie stosuje ale zapewne wystarczy elementom o które chodzi nadać id="tmp".Można też zastosować zamiast getElementById, getElementByName ale z tego co pamiętam to jednakowe nazwy czy Id sprawiają że validator woła o pomste do nieba.

2. To co ja stosuje to numerowane id, np jak ma Pan 10 pól input na stronie to Pański kod powinien wyglądać tak:

Kod: Zaznacz cały

function language() { 

for(i=0;i<10;i++){
         var tmp = document.getElementById("tmp"+i).value; 
         var jezyk = tmp ; 
            switch(jezyk){ 
            
         case 'PL' : 
            document.getElementById("jezyk").value ="polski"; 
            break;
 
         case 'EN' : 
            document.getElementById("jezyk").value ="angielski"; 
            break;
}
            }
         }
Pętla for będzie sama sobie robić nazwy typu tmp0, tmp1, tmp2 itp. Numeracja w tym wypadku dla 10 elementów jest od 0 do 9. Trzeba o tym pamiętać żeby jakiegoś nie nazwać tmp10. Zawsze można pętle przestawić w ten sposób:
for(i=1;i<=10;i++)
Wtedy numeracja pójdzie od 1 do 10.
tatu
Nowy
Nowy
Posty: 89
Rejestracja: śr lut 09, 2005 1:58 pm

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: tatu »

dzikuje za pomoc, mam jeszcze pytanie, jak to zmodyfikowac, zeby najpierw moze byla zmienna, do ktorej zliczaloby elementy listy, a pozniej podstawialbym ja pod i<$zmienna, bo lista jest dynamiczna i ma tyle elementow, ile razy kliknie uzytkownik?
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: gorylek »

Jeżeli nie wiesz ile będzie takich pól input to wystarczy zmienić troszke skrypt:

Kod: Zaznacz cały

function language() { 

var i=0;

   while(document.getElementById("tmp"+i)){

         var tmp = document.getElementById("tmp"+i).value; 
         var jezyk = tmp ; 
            
         switch(jezyk){ 
            
         case 'PL' : 
            document.getElementById("jezyk").value ="polski"; 
            break; 
  
         case 'EN' : 
            document.getElementById("jezyk").value ="angielski"; 
            break; 
         } 
   i++;
   } 
}
Jedyne o co musisz się martwić to żeby pola nazywały się tmp1, tmp2, tmp3... tmp999, tmp1000, tmp1001 i była w tym ciągłość jeden po drugim. Skrypt będzie działał na każde pole z nadanym w ten sposób ID.

Pozdrawiam
gorylek
tatu
Nowy
Nowy
Posty: 89
Rejestracja: śr lut 09, 2005 1:58 pm

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: tatu »

a mozna w js dynamicznie zmieniac nazwe id=tmp na id=tmp1 id=tmp1 ... id=tmp10? ewentualnie tak przerobic skrypt i html, zeby dzialalo dla wszystkich elementow listy, bo mam wplyw tylko na kod po stronie przegladarki, nie serwera i nie moge wstawic id="$tmp" dla cms-a
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: gorylek »

Mozesz to zrobic na okolo troche jezeli znasz nazwy pol input. Wtedy piszesz funkcje ktora bierze element poprzez nazwe i przypisuje jej id. Nie ma mnie teraz w domu i nie mam czasu zeby rzucic okiem do manuala ale to bedzie co stakiego:

Kod: Zaznacz cały

ob = document.getElementByName(nazwa_pola);
ob.id="tmp1";
Ale taki skrypt trzeba zastosowac dla kazdego pola input, nie da sie raczej zrobic masowki.
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: gorylek »

Mozesz to zrobic na okolo troche jezeli znasz nazwy pol input. Wtedy piszesz funkcje ktora bierze element poprzez nazwe i przypisuje jej id. Nie ma mnie teraz w domu i nie mam czasu zeby rzucic okiem do manuala ale to bedzie co stakiego:

Kod: Zaznacz cały

ob = document.getElementByName(nazwa_pola);
ob.id="tmp1";
Ale taki skrypt trzeba zastosować dla każdego pola input, nie da sie raczej zrobić masówki. A przynajmniej nie da sie tego zrobić tak żeby nie natknąć sie na jakies nieprzewidywalne błędy. Zwłaszcza jeżeli nie wiesz ile będziesz miał elementów.

Poza tym dlaczego nie masz wpływu na id pól ? Skoro masz wpływ na kod po stronie przeglądarki to masz dostęp do plików żeby go tam umieścić a skoro masz dostęp do pliku to kilka modyfikacji i kod można dostosować do wymagań.

Poza tym zapominasz o drobnej sprawie. W momencie gdy ktoś ma wyłączony JS w przeglądarce (a trochę osób tak robi), Twoja strona sporo traci na funkcjonalności.

EDIT//
Oczywiście jeżeli napiszemy funkcje przekazujaca nazwe pola lub id przez parametr, skrypt bedzie mozna zastosowac dla kazdego pola formularza, mankament jest taki ze sama funkcje bedzie trzeba odpalic tyle razy ile mamy pol formularza.
!ans
Nowy
Nowy
Posty: 131
Rejestracja: wt gru 11, 2007 9:59 pm
Lokalizacja: zza rogu

Re: [js] wyswietlanie informacji w zaleznosci od parametru

Post autor: !ans »

Kod: Zaznacz cały

var form = document.forms['nazwa_formularza'];
for (i=0;i<form.length;i++) {
	var tmp = form.elements[i].value;
    	var jezyk = tmp ;
    	switch(jezyk){
    		case 'PL' :
    			document.getElementById("jezyk").value ="polski";
    	        break;
 			case 'EN' :
    	        document.getElementById("jezyk").value ="angielski";
    	        break;
}
Tak powinno być ok. Nieważne ile będziesz miał tych pula. Pamiętaj tylko żeby formularzowi nadać atrybut name.[/code]
ODPOWIEDZ