PDA

View Full Version : [js]script che non va su IE, mentre su tutti gli altri sì...


Janky
27-11-2007, 21:35
Ciao, non riesco a capire perchè questo script funziona su tutti i browser tranne che su IE


function onAirNow() {
onAir = document.getElementById("onAir")
date = new Date()
d = date.getDay()
h = date.getHours()

if (d == 1)/*lunedì*/
{
if (h<8)
{
img = 'indirizzo/img.png';
onAir.style.backgroundImage = 'url('+img+')';
}
}
}



è uno script molto semplice: a seconda del giorno e dell'ora carica una immagine diversa... (naturalmente qui sopra tagliato un po'.. sono sempre gli stessi if alla fin fine)

come mai secondo voi non va?

andbin
27-11-2007, 22:14
[code]
onAir = document.getElementById("onAir")Metti

var onAir = document.getElementById("onAir")

Per motivi che adesso non mi ricordo bene (e dovrei documentarmi) nella funzione, onAir faceva già riferimento all'oggetto con ID "onAir".

Comunque è buona norma, specialmente nelle funzioni, dichiarare le variabili con var, altrimenti andrebbero a far parte dell'oggetto window, con altre eventuali conseguenze.

Janky
28-11-2007, 15:14
grazie, appena ho accesso a un computer con windows provo...

cmq mi potreste aiutare anche per un'altra cosa?

non riesco a mettere questo script in un file esterno e a farlo eseguire...

cioè.. io ho questa funzione, la metto in un file esterno .js e lo importo così come l'ho scritto sopra (come funzione) nell'header tramite questo codice:

<script type="text/javascript" src="path....onAirNow.js" language="JavaScript"></script>


ma non visualizzo niente...

se lo scrivo direttamente nell'header e uso la proprietà onLoad del body per richiamare la funzione invece parte...

come faccio?

Grazie

andbin
28-11-2007, 15:34
ma non visualizzo niente...

se lo scrivo direttamente nell'header e uso la proprietà onLoad del body per richiamare la funzione invece parte...

come faccio?Magari hai già fatto così ma preferisco precisarlo. Nel file .js va messo solo ed esclusivamente codice Javascript, non vanno messi tag html o la parte <!-- //--> per racchiudere il codice Javascript.

Janky
29-11-2007, 12:01
sì, non ho messo nessun codice html nel file js

credo cmq che il problema sia eseguire la funzione, cioè se scrivo il codice direttamente nell'header riesco ad eseguire la funzione tramite il paramentro onLoad del body
<body onLoad="javascript:onAirNow();">

se invece metto la funzione nel js esterno come la richiamo? se uso ancora l'onLoad non va.
ho anche provato a scriverla come codice normale e non come funzione, ma non va lo stesso

ndakota
29-11-2007, 12:22
sono un noob ma per chiamarla non basta nome_funzione(parametri)??

AlexGatti
29-11-2007, 14:11
sì, non ho messo nessun codice html nel file js

credo cmq che il problema sia eseguire la funzione, cioè se scrivo il codice direttamente nell'header riesco ad eseguire la funzione tramite il paramentro onLoad del body
<body onLoad="javascript:onAirNow();">

se invece metto la funzione nel js esterno come la richiamo? se uso ancora l'onLoad non va.
ho anche provato a scriverla come codice normale e non come funzione, ma non va lo stesso

purtroppo ho notato anch'io questa cosa.
Ovvero se si mette una funzione in un js staccato e la si esegue all'onload a volte da errore, come se il js non venisse caricato subito.
Nel mio caso ho fatto spallucce e ho messo il codice direttamente sulla pagina (su tutte le pagine) interessata.

Janky
29-11-2007, 19:44
vabè... allora se non ci sono soluzioni risolvo facendo un'include con php e lascio l'onload nel body

grazie