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

    [Javascript] Firefox e IE interpetano le impostazioni in maniera diversa

    Ho un form con dei campi input al quale ho associato un foglio stile.

    Questa è la parte del foglio stile attribuita ai campi di input

    codice:
    	margin-bottom:-2px;
    	margin-left:-3px;
    	margin-top:-2px;
    	width:330px;
    	font-size:10px;
    Quando avviene l'evento onclick modifico alcuni campi di input con:

    codice:
    if(i != id)
    {
    	document.getElementById(i).style.background=""; // faccio ritornare lo sfondo allo stato iniziale
    	document.getElementById(i+"a").style.border="";
    	document.getElementById(i).style.color='#ff0000';
    	document.getElementById(i).style.borderColor="";	
    }
    else
    {					
    	document.getElementById(i).style.background='#ff0000';	// lo sfondo diventa rosso
    	document.getElementById(i).style.borderColor='#ff0000';
    	document.getElementById(i+"a").style.borderColor='#ff0000';
    	document.getElementById(i).style.color='#ffffff';	
    }
    Le impostazioni vuote ("") Firefox e Safari le interpetano come un "ritorno allo stile iniziale", mentre IE le interpreta come nulle, quindi il contorno del campo di input non torna come prima, non si vede, lasciando più spazio fra un campo e l'altro.

    Si può risolvere questo problema o per ogni impostazione vuota devo impostare un valore?

  2. #2
    difficile dire chi abbiaragione, di fatto quando accedi alla proprietà style di un elemento sovrascrivi quella CSS quindi è arbitrario interpretare la stringa vuota come un "ritorno all'origine", ovvero il CSS.


    Io agirei diversamente ...

    codice:
    document.getElementById(i).className = i != id ? "clicked" : "regular";
    dove clicked e regular saranno definiti nel CSS
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Grazie del suggerimento, ma poi ho scoperto che il problema era che nell'if usavo
    codice:
    document.getElementById(i+"a").style.border="";
    mentre nell'else
    codice:
    document.getElementById(i+"a").style.borderColor="";
    Tuttavia rimane il problema della spaziatura fra i campi di input, che nonostante li imposto tramite css, c'è una leggera differenza fra un browser e l'altro


    [EDIT:] Inoltre nell'if (dove reimostavo il form allo stato originale) ho impostato il colore di sfondo invece che usare "".

  4. #4
    Apparte il fatto che la soluzione migliore è quella proposta da Andrea, ma se proprio vuoi fare come hai fatto finora è meglio impostare le regole a null piuttosto che a "".

    Per quanto riguarda la spaziatura prova ad azzerare il padding, se non cambia niente, be... usa un hack e non se ne parla più.

  5. #5
    Originariamente inviato da Mega69
    Apparte il fatto che la soluzione migliore è quella proposta da Andrea, ma se proprio vuoi fare come hai fatto finora è meglio impostare le regole a null piuttosto che a "".

    Per quanto riguarda la spaziatura prova ad azzerare il padding, se non cambia niente, be... usa un hack e non se ne parla più.
    Proverò a vedere con l'hack, con il padding fra IE e Firefox ho ottenuto risultati diversi.

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.