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

    Explorer vuole sempre gli apici?

    Ciao ragazzi, tutto nasce da questa funzioncina:

    codice:
    	function rivela()
    	{
    		if (document.form_cv.nazione.value != 73)
    			document.form_cv.citta.disabled = true;
    		else
    			document.form_cv.citta.disabled = false;
    	}
    Facile no? Se una select ha valore 73 disabilita un'altra select (che si chiama città).
    Funziona benissimo su Firefox e Opera, ma NON su Explorer 7.
    Ora, dato che non è la prima volta che quest'ultimo mi fa impazzire, mi chiedo se sia necessario inserire tutti i valori negli apici o nei doppi apici, e quando gli uni o gli altri siano necessari.
    Ringrazio in anticipo e auguro buon appetito.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se si tratta di una select la sintassi esatta e':

    if (document.form_cv.nazione.options[document.form_cv.nazione.selectedIndex].value != '73')

    ... e si, il value di tutti i campi di un form e' una stringa.

    ciao
    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

  3. #3
    Originariamente inviato da br1
    Se si tratta di una select la sintassi esatta e':

    if (document.form_cv.nazione.options[document.form_cv.nazione.selectedIndex].value != '73')

    ... e si, il value di tutti i campi di un form e' una stringa.

    ciao
    Apperò, questa sintassi la ignoravo completamente. Firefox e Opera sono più easy in merito?
    Metto in pratica e ringrazio.

  4. #4
    questa è una cosa che pochi alle prime armi capiscono (e l'idea della Gecko (mi sembra) di fare il casting automatico non aiuta certo l'apprendimento degli strumenti di sviluppo...):

    Tutto, ma proprio tutto, il HTML è testo, stringa, char o come volete chiamarlo. Quando in una input text inserite 123 in realtà avete inserito '123'. Stessa cosa con le option, il value è un testo, anche se vi inserisci dei numeri, lui, il JS runtime, li vede come una stringa.

    Proprio per evitare di dover fare casting ogni volta molti browser hanno creato l'if che fa automaticamente il casting (cioè sto valutando se un numero ed una stringa sono uguali, tratta il numero come una stringa e siamo a posto, bisogna considerare che javascript, sebbene basi la propria sintassi su Java, è molto diverso il suo interprete, ma questo è un altro discorso). Explorer da bravo prodotto Microsoft, non accetta questa condizione (casting implicito) come non implementa una marea di cose come fanno tutti gli altri.
    In generale, mi vedete contro IE con tutte le mie forze, ma, in questo caso, do ragione a lui: un Number è diverso da un String e non sono comparabili, anche perché se volessi trasformare un numero in una stirnga dovrei convertire da ASCII a Char e vice versa non fare 123 > '123', in questo caso dovrei avere '{'.

    Più che giusto quindi che venga lanciata una Exception e non un casting implicito.

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.