Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con script per select

    Ciao a tutti.
    Io utilizzo questo script per far sì che ad ogni voce di una select che viene selezionata
    mi faccia apparire delle righe di descrizione di quella voce.

    function ShowCode()
    {
    var sel = document.getElementById('sel');
    var selected = sel.selectedIndex;
    var length = sel.options.length;
    var block = 'opt' + sel.options[selected].value;

    for(var i=1; i <= length; i++)
    {
    document.getElementById('opt' + i).style.display = 'none';
    }

    document.getElementById(block).style.display = 'block';
    }

    Funziona bene solo se assegno ad ogni voce un value numerico. Se invece assegno un value con del testo non funziona più.
    Mi dite come devo modificarlo per far sì che funzioni anche nell'altro modo ?
    Grazie.
    Gaetano

  2. #2
    ciao, fai partire il ciclo da 0 e non da 1, e cambia i nomi della variabili (selected e length sono parole riservate).

    saluti

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se hai id non piu' riconducibili a valori numerici devi mantenere una relazione tra essi,
    perche' quando cicli ricostruisci gli id dal valore numerico che ha la variabile i all' interno del ciclo

    puoi farlo in vari modi, il piu' veloce dei quali e' avere un array con gli id degli elementi da mostrare/nascondere
    codice:
    ...
    var blocco = 'opt' + sel.options[selected].value;
    var arrIdBlocchi=['optA','optB','optC','optD','optE'];
    
    for(var i=0; i<arrIdBlocchi.length; i++)
    {
    document.getElementById(arrIdBlocchi[i]).style.display = 'none';
    }
    
    document.getElementById(blocco).style.display = 'block';
    }
    ...
    se invece non conosci a priori quanti e quali id devono essere interessati devi usare il DOM per identificare tutti gli elementi di un certo tipo,
    se per esempio fossero tutti div, contenuti in un div con un id conosciuto
    codice:
    ...
    var divs=document.getElementById('idContenitore').getElementsByTagName('div');
    for(var i=0; i<divs.length; i++){
      // se sai di avere altri div nel contenitore che non devono essere affetti
      // considera solo i div il cui id, per esempio, comincia per "opt"
      if(divs[i].id && divs[i].id.indexOf('opt')==0){
        document.getElementById(divs[i]).style.display = 'none';
      }
      // altrimenti, elimina il blocco if qui sopra e lascia solo
      // document.getElementById(divs[i]).style.display = 'none';
    }
    ...
    ciao

  4. #4
    grazie mille a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.