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

    Condizione ternaria con più istruzioni

    Ciao a tutti
    Chiedo scusa in anticipo per la banalità di questa domanda xD
    Non ho mai usato le condizioni ternarie, ma ho deciso che è il momento di utilizzarle visto che avevo ed ho poca dimestichezza con esse..inoltre mi sembra una sintassi elegante..il problema è questo: ho sempre trovato esempi con una singola istruzione nell'if e nell'else, ad esempio:

    codice:
    var saluto= (nome=="marco")?alert("ciao marco!"):alert("non sei marco..");
    Il problema è questo..vorrei utilizzare più di un'istruzione nell'if e nell'else..il problema è che non funziona! eccovi un esempio:

    codice:
    var c="marco";
    (c=="marco")?function(){alert('ciao marco!');var p='eccoti di ritorno marco!';document.write(p);}:alert("non sei marco");
    In questo caso ho utilizzato una semplicissima funziona nel caso c corrisponda a marco..ma perchè non funziona? le condizioni ternarie non accettano più di un istruzione e quindi non accettano funzioni?
    Scusate la (forse) banalità di questa domanda.

    Grazie per la perdita di tempo
    Marco

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Funzionava benissimo, ma immagino che tu oltre a dichiarare una funzione la volessi anche eseguire... Ti ho messo a posto le parentesi (in rosso):

    codice:
    var c = "marco";
    
    c === "marco" ? (function() {
    	alert('ciao marco!');
    	var p = 'eccoti di ritorno marco!';
    	document.write(p);
    })() : alert("non sei marco");
    A differenza dell'if la condizione ternaria non necessita di parentesi tonde prima del punto interrogativo, per esprimere la condizione insomma, che diventano quindi prolisse. Ho tolto quindi le parentesi da c === "marco". La condizione ternaria puoi usarla anche così, in "campo libero", ma normalmente si usa con l'assegnazione di un valore:

    codice:
    document.mioForm.mioInput.value = /\W/.test(document.mioForm.mioInput.value) ? document.mioForm.mioInput.value.toLowerCase() : "Inserire solo lettere!";
    Puoi anche eseguire più istruzioni per ogni condizione, a patto che siano separabili da una virgola, di cui l'ultima costituirà il valore da assegnare:

    codice:
    document.mioForm.mioInput.value = /\W/.test(document.mioForm.mioInput.value) ? document.mioForm.mioInput.value.toLowerCase() : alert("Inserire solo lettere!"), document.mioForm.mioInput.value.replace(/\W/i, "");

  3. #3
    Sei stato gentilissimo, grazie mille, la funzione giustamente non era stata "attivata".
    Senti, gentilmente, posso chiederti un altra cosa? Se vado ot dimmelo..ecco volevo chiederti..ho visto spesso nelle tue risposte ai quesiti in questa sezione javascript che fai abbondante uso di istruzioni del tipo /\W/.test o usi espressioni regolari (mai capite..e sopratutto non saprei come e dove usarle)..ecco..volevo chiederti per caso sai suggerirmi alcune guide o tutorial su questi tipi di istruzioni visto che non li capisco assolutamente..
    Grazie mille e scusami della perdita di tempo.

    Marco

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Ci sono tanti tutorial in rete, ma io non ho nessuno in particolare da suggerirti, a parte questa guida in inglese...

    https://developer.mozilla.org/User:q...ar_Expressions


  5. #5
    Ti ringrazio, domani lo leggerò sicuramente.
    Grazie di tutto.

    Marco

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.