Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585

    Semplificazione codice: if con variabile e molti valori

    Ciao a Tutti,

    ho la mia pagina test.htm con il seguente codice:

    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>TEST</title>

    <Script Language="JavaScript">

    function set_disp() {

    var j_act="Q";

    if (j_act=="L" || j_act=="M" || j_act=="T") { document.getElementById('ck_close').disabled = false; } else { document.getElementById('ck_close').disabled = true; }

    // if (['L','M','T'].indexOf(j_act) > -1) { document.getElementById('ck_close').disabled = false; } else { document.getElementById('ck_close').disabled = true; }
    }

    </script>
    </head>

    <body onload="set_disp()">

    <input type="checkbox" id="ck_close" name="ck_close" style="background-color: cyan;" class="exclude" onclick="if (this.checked) {this.value=1;}"></td>

    </body>
    </html>


    Quando si apre la pagina test.htm, la funzione controlla quale valore abbia la variabile j_act.
    Se j_act ha un valore diverso da L,M,T allora il checkbox e' disattivo, invece
    se j_act ha un valore pari a L, M, T allora il checkbox risulta attivo.

    La pagina funziona correttamente.

    Se sostituisco il codice blu con il codice in rosso, ottengo l' errore: "Proprieta' o metodo non supportati dall' oggetto"; uso Interet Explorer6, 8 e l' errore e' lo stesso.
    Con Firefox invece questo errore non sussiste.


    Domanda: e' possibile con Internet Explorer usare una forma piu' compatta, come quella in codice rosso, per fare un if con condizioni multiple senza dover ripetere 3 o piu' volte la stessa condizione ??
    j_act =="L", j_act=="M", j_act=="T", ecc...
    Se la creazione di un array (di cui sopra) non e' supportata per il browser di Internet Explorer, c' e' un sistema alternativo per compattare il codice ??

    Grazie mille in anticipo !!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Puoi crearti la funzione indexOf

    codice:
    if (!Array.prototype.indexOf){
      Array.prototype.indexOf = function(el){
        var i;
        var len = this.length;
        for(i=0;i<len;i++){
          if(this[i] === el) return i;
        }
        return -1;
      };
    }
    Se la funzione indexOf è supportata del browser viene usata la funzione nativa altrimenti (IE < 9) viene utilizzata questa implementazione.

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    senza creare un array puoi usare:

    if ('L,M,T'.indexOf(j_act) > -1)

    Puoi usare una forma ancora piu' compatta:

    document.getElementById('ck_close').disabled = ('L,M,T'.indexOf(j_act) > -1) ? false : true;

    oppure le regular expression
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    585
    Grazie mille, davvero bravi !!!!!

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.