PDA

View Full Version : [JS] Impossibile modificare le variabili globali


HoldenCaulfield1987
01-01-2013, 15:06
Ciao,
sto scrivendo uno script js che deve gestire delle mappe.
Ho una serie di variabili globali che, tramite una funzione, devono essere modificate per impostare il caricamento di una determinata mappa.
Il problema è che nonostante all'interno della funzione le assegnazioni vadano a buon fine (ho stampato i valori aggiornati tramite console.log()) nelle altre funzioni che lavorano queste informazioni i valori restano quelli impostati quando ho dichiarato queste variabili.

Un po' di codice forse spiegherà meglio:

var idMappa = -1;
var paginaPrecedente = null;

function back()
{
console.log("back: " + paginaPrecedente); // stampa null
console.log("back_id: " + idMappa); // stampa -1
//...
}

function setInfo(id, pagina)
{
paginaPrecedente = pagina;
idMappa = id;
console.log("Pagina: " + paginaPrecedente); // stampa correttamente il contenuto dell'argomento pagina
location.href = "maps.html";
}


Quindi:
viene lanciato setInfo che tra le varie operazioni setta i nuovi valori passati come parametri.
Quando poi in seguito viene lanciato back i valori stampati non sono più quelli che setInfo aveva impostato.

Da cosa potrebbe dipendere?
Grazie e buon anno!

idoido
01-01-2013, 16:33
dal codice che hai postato è normale che i valori non vengono impostati.
nel momento in cui tu fai location.href = "maps.html";
tu richiami da zero la pagina e quindi le variabili vengono reinizializzate dal codice
var idMappa = -1;
var paginaPrecedente = null;

dovresti fare una cosa del tipo

location.href = "maps.html?id="+ idMappa;

e poi leggere il valore dalla querystring

HoldenCaulfield1987
01-01-2013, 16:36
Ho dimenticato di dire che tutte le funzioni e tutte le variabili sono all'interno del medesimo file js.
Viene sempre ricaricato tutto per ogni pagina che include il file?

Enriko81
02-01-2013, 17:12
Ho dimenticato di dire che tutte le funzioni e tutte le variabili sono all'interno del medesimo file js.
Viene sempre ricaricato tutto per ogni pagina che include il file?

yes it is. :read:

HoldenCaulfield1987
02-01-2013, 17:18
Grazie.

HoldenCaulfield1987
02-01-2013, 17:22
Secondo te dal momento che devo tenere varie informazioni memorizzate da qualche parte, e passarle nell'url non mi pare una grossa idea, l'uso di qualche cookie potrebbe essere utile?
Ad esempio devo tenere in memoria delle mappe preimpostate, o dei vettori che vengono popolati all'avvio dello script e che poi non saranno più modificati.

Grazie.

Enriko81
02-01-2013, 17:38
Secondo te dal momento che devo tenere varie informazioni memorizzate da qualche parte, e passarle nell'url non mi pare una grossa idea, l'uso di qualche cookie potrebbe essere utile?
Ad esempio devo tenere in memoria delle mappe preimpostate, o dei vettori che vengono popolati all'avvio dello script e che poi non saranno più modificati.

Grazie.

si ok per i cookie , ma dipende anche dal linguaggio che usi.
puoi usare anche session (oggetto sessione) se nel tuo linguaggio è previsto.

HoldenCaulfield1987
02-01-2013, 17:39
Devo realizzare tutto in javascript.

Enriko81
02-01-2013, 17:52
se sono solo banali stringhe usa i cookie.
puoi farti un array di stringhe con un delimitatore e lo scorri con un for.

oppure usi qualche framework ad oggetti per javascript tipo JSON.