Sortare crescator /descrescator dupa valoare din Select list

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
patricia
Mesaje: 82

Sortare crescator /descrescator dupa valoare din Select list

Buna,
Am incercat un script: in pagina sunt mai multe imagini, sub fiecare imagine exista un div al carui continut este pretul produsului afisat in imagine.
Prin intermediul unei liste de selectie doresc ca la selectarea valorilor crescator sau descrescator sa se schimbe continutul acelor etichete DIV si al imaginilor, valorile fiind preluate din doi Array.
Am incercat scriptul acesta, dar nu functioneaza, trebuie sa procedez altfel?

Cod: Selectaţi tot

<form>
<select name="sortare" onchange="sorteaza();">
<option value="crescator">crescator</option>
<option value="descrescator">descrescator</option>
</select>
</form>
<img src="img1.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">120RON</div><br><br><br>
<img src="img3.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">100RON</div><br><br><br>
<img src="img4.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">90RON</div><br><br><br>
<img src="img5.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">60RON</div><br><br><br>
<script type="text/javascript">
function sorteaza(){
preturi=['60RON','90RON','100RON','120RON'];
imagini=['img1.jpg','img3.jpg','img4.jpg','img5.jpg'];
if(document.forms[0].sortare.selectedIndex==0){
aux2=null;
aux2=document.getElementsByTagName('div');
for(var i=0;i<aux2.length;i++){
aux2[i].innerHTML=preturi[i];
document.images[i].src=imagini[i];
}}

else{
aux2=null;
aux2=document.getElementsByTagName('div');
for(var i>aux2.length;i=0;i--){
aux2[i].innerHTML=preturi[i];
document.images[i].src=imagini[i];
}}
}
</script>

MarPlo Mesaje: 4343
Buna,
In script-ul dat de tine e gresala de sintaxa la:
for(var i>aux2.length;i=0;i--)
Corect vine asa:

Cod: Selectaţi tot

for(var i=0; i>aux2.length; i--)
- Daca ai folosi browser-ul Firefox cu addon-ul Firebug, ti-ar descoperi aceste greseli.
Plus greseli de logica, in acele Array nu ai elemente cu index de ordine (i) mai mari decat: aux2.length . Ar merge asa:

Cod: Selectaţi tot

for(var i=(aux2.length - 1); i>=0; i--)
Sau poti incearca varianta asta:

Cod: Selectaţi tot

<form>
<select name="sortare" onchange="sorteaza(this.value);">
<option value="crescator">crescator</option>
<option value="descrescator">descrescator</option>
</select>
</form>
<img src="img1.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">120RON</div><br><br><br>
<img src="img3.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">100RON</div><br><br><br>
<img src="img4.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">90RON</div><br><br><br>
<img src="img5.jpg" width="200" height="200"><br>
<div class="pret" style="background-color:red;color:white;font-width:bold;font-size:30px;">60RON</div><br><br><br>
<script type="text/javascript">
function sorteaza(val){
  var preturi = ['60RON','90RON','100RON','120RON'];
  var imagini = ['img1.jpg','img3.jpg','img4.jpg','img5.jpg'];
  var aux2 = document.getElementsByTagName('div');
  var nr_aux2 = aux2.length;

  for(var i=0; i<nr_aux2; i++){
    var ixadd = (val == 'crescator') ? i : nr_aux2 - i - 1;
    aux2[i].innerHTML = preturi[ixadd];
    document.images[i].src = imagini[ixadd];
  }
}
</script>

Subiecte similare