Visualizzazione dei risultati da 1 a 5 su 5

Discussione: funzione e if..else

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    5

    funzione e if..else

    salve
    sto perdendo la testa su questa funzione che non vuole saperne di lavorare. Anche se sono alle prime armi, non mi sembra una cosa molto complicata, ma purtroppo da diversi giorni non riesco proprio a trovare una soluzione. questa la funzione tra i tag head :

    function Esempio(divbase) {
    var colore = document.getElementById(divbase).style.backgroundC olor;
    alert(divbase);
    if (colore = "#ff0000"){
    document.getElementById(divbase).style.backgroundC olor = "#00ff00";
    return;
    }
    else if (colore = "#00ff00"){
    document.getElementById(divbase).style.backgroundC olor = "#0000ff";
    return;
    }
    else {
    document.getElementById(colorebase).style.backgrou ndColor = "#ffffff";
    return;
    }
    }

    senza return non funziona proprio, cosi' come break.
    e questa la chiamata da html:

    <div id="d18" background-color:#ff0000;" onclick="Esempio('d18')"></div>

    al primo click legge il colore rosso e lo cambia in verde;
    al secondo click legge il colore verde e non cambia più nulla come pure ai click successivi

    dove sbaglio ?
    un consiglio o una lettura specifica.
    alla prossima

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Nella sintassi <div id="d18" style="background-color:#ff0000;" onclick="Esempio('d18')"></div> nel tuo codice riportato manca il pezzo in grassetto e questo è sbagliato if (colore = "#ff0000") i controlli si fanno if (colore == "#ff0000") == (controlo) = (assegnazione) altro appunto è inutile passare id dell'elemento per poi fargli recuperare il colore dalla funzione, passa direttamente il colore

    function Esempio(colore) {
    if (colore == "#ff0000"){
    <div id="d18" style="background-color:#ff0000;" onclick="Esempio('#ff0000')"></div>
    oppure se devi recuperare il colore del div cliccato puoi fare anche cosi:
    <div id="d18" style="background-color:#ff0000;" onclick="Esempio(this.style.backgroundColor)"></div>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    5
    grazie Andrea per la sollecita risposta e scusami ma per essere sintetico ho mancato di aggiungere style =" ..." che di fatto esiste.

    ...mi sembra strano, ma con il doppio = come mi hai indicato non funziona.
    In effetti la funzione che ti ho postato funziona bene solo per il primo click (ti ripeto mi cambia il colore del div da rosso a verde) e parzialmente con il secondo click sul div (mi legge solo il colore verificato con un alert che nel frattempo e' diventato verde dopo il primo click) senza cambiare più colore anche con ripetuti click sullo stesso div.
    Con il doppio uguale salta direttamente all'else colorando di bianco il mio div.


  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    ma con il doppio = come mi hai indicato non funziona.
    impossibile i controlli si fanno cosi in js (riscontrabile da qualsiasi guida) se non funziona il problema è altrove
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    5
    che l'uguaglianza richieda il doppio segno uguale, non c'e' alcun dubbio !
    Ma è proprio questa circostanza da te sottolineata che mi ha fatto riflettere :
    visto che con il doppio uguale saltava direttamente all'else finale, voleva dire che un confronto c'era ma i termini non corrispondevano.
    Infatti, la funzione legge il colore del div passato come parametro nel formato rgb(0, 0, 0) [minuscolo e con uno spazio tra una cifra e l'altra], mentre il colore messo a contronto era in esadecimale (#001122).

    Sistemate le cose tutto è andato a posto.

    Grazie per i suggerimenti.
    Jo

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.