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

    onChange su un select non rispetta la funzione

    Innanzitutto buongiorno a tutti. Ho letto il regolamento e c'era scritto di evitare di scrivere cose superflue nel titolo, quindi i saluti li faccio qui all'interno.
    Passando alle cose serie inizio con lo spiegare il problema.
    Abbiamo un form select:
    codice:
    <form>
    <select id="nome" size="1" onChange="cambio()">
    <option value="nada">SELEZIONA</option>
    <option value="rosso">rosso</option>
    <option value="giallo">giallo</option>
    </select>
    </form>
    la funzione in questione (cambio) è la seguente:
    codice:
    function cambio() {
    var opzione= document.forms[0].nome.options[document.forms[0].nome.options.selectedIndex];
    if (opzione.value="rosso") {alert("hai selezionato rosso");};
    else if (opzione.value="giallo") {alert("hai selezionato giallo");}
    }
    Ecco, solo che c'è un problema: non viene rispettato l' "else if". Sia che io selezioni rosso e sia che io selezioni giallo l'alert mi dice sempre "hai selezionato rosso". Dove sbaglio?

    Se vi state chiedendo che utilità abbia tutto ciò la risposta è: nessuna. Sto solo cercando di imparare lo javascript e quindi provo a creare scripts del tutto inutili per esercitarmi.
    Grazie per le risposte.

    P.s. mi è parso di aver rispettato il regolamento, se non l'avessi fatto ditemi dove ho trasgredito e non lo farò più.

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    http://javascript.html.it/guide/lezione/851/operatori/
    hai usato un assegnamento (=) dove in realtà serve un confronto (==)

    circa la tua funzione è un po' ridondante
    visto che stai imparando, prova a capire perché questa versione più compatta funziona comunque:

    codice:
    <form>
    <select id="nome" size="1" onChange="cambio(this)">
    <option value="nada">SELEZIONA</option>
    <option value="rosso">rosso</option>
    <option value="giallo">giallo</option>
    </select>
    </form>
    codice:
    function cambio(s) {
    if (s.value == "rosso") {
        alert("hai selezionato rosso");
    }
    else 
       if (s.value == "giallo") {
           alert("hai selezionato giallo");
       }
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    errore banalissimo...il doppio uguale nell'if

    :O mi hai anticipato di pochissimo fcaldera xD

  4. #4
    sì è così, ora va....

    e grazie per la versione alternativa, in effetti è molto più comprensibile.

    Per quanto mi riguarda il problema è risolto, devo chiudere il thread da qualche parte o fanno loro?

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.