Pagina 1 din 1

Sortare crescator /descrescator dupa valoare din Select list

Scris: Vin Aug 24, 2012
de patricia
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>

Sortare crescator /descrescator dupa valoare din Select list

Scris: Sâm Aug 25, 2012
de MarPlo
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>