Newsgroup: it.comp.lang.javascript
Titolo: trigger e alert

Perchè così funziona:
alert("idviaRICHIESTA : " + idviaRICHIESTA);
$("#Nidx"+idviaRICHIESTA).trigger("click");
 
e cos' NO?
// alert("idviaRICHIESTA : " + idviaRICHIESTA);
$("#Nidx"+idviaRICHIESTA).trigger("click");
 
a qualcuno è già successo qualcosa del genere?
Leonardo
 
 

 $("#Nidx"+idviaRICHIESTA).trigger("click");
 
Come hai detto tu nell'altro thread, è evidentemente una questione di
tempistiche. Stai dando al browser il tempo di fare qualcosa. La Console
degli errori ti dice niente?


No, nessun errore. Dovrei trovare il modo di capire quando la mappa č pronta 
sul video e  solo allora fare il trigget.
Ci sarebbe, forse, un'altra soluzione; suppunendo che l'alert forzi la 
presenza nel dom del menů delle vie, si potrebbe far fare qualcosa al codice 
che non sia visibile all'utente ma che faccia quello che sembra faccia 
alert.
Ciao
Leonardo
 
 
 
 

 alert.
 
Per carità di dio, no. :)
 


Sommariamente, ecco quello che sto facendo:
Sto scrivendo uno stradario.
Le vie sono in una tabella MySQL ed ogni via o piazza ha un suo ID.
Per la pagina web, in alto c'č il menu delle iniziali delle vie e sulla 
sinistra l'elenco di vie con la stessa iniziale.
Quando l'utente preme ad esempio su B, alla sinistra delle pagina compare 
l'elenco delle vie che iniziano con la lettera B.
Questo l'ho fatto senza uscire dalla pagina leggendo le vie con ajax e 
popolando il menu con jquery.
Quando poi l'utente fa  click su di una via (menů a sinistra), sempre senza 
uscire dalla pagina, una mappa google fa vedere la posizione esatta dove si 
trova la via  e tramite altri 2 controlli (1 casella di testo per inserire 
una localitŕ ed un pulsante submit) l'utente puň costruire il percorso da 
una qualsiasi localitŕ al luogo scelto sullo stradario. Percorso che 
naturalmente si forma visivamente sulla stessa pagina nella mappa google di 
cui prima.
E fin qui tutto bene l'ho fatto ed č funzionante.
Ma lo stradario fa parte di un sito con altre pagine. Su queste altre 
pagine, nel testo e con immagini, si fa riferimento a luoghi fisici del 
territorio.
L'idea č di fare, quando necessario, dei link a questo stradario dalle altre 
pagine del sito.
Il link di queste pagine, tramite una querystring (le pagine sono tutte in 
PHP) comunica l'ID della via ed eventuale indirizzo esatto, che č sempre 
l'ID della via piů un numero in una variabile diversa. (eventualmente farň 
una sottotabella indirizzario con rapporto 1 a molti fa stradario e 
indirizzario)
E qui sono sorti i problemi dei quali si parlava.
All'arrivo della querystring sulla pagina stradario viene letta e costruito 
con ajax il menu latrale utilizzando le funzione scritte per la navigazione 
interna allo stradario.
Se per esempio arriva 45 che corrisponde all'ID di via Mazzini, il menu 
laterale che si forma č quello delle vie inizianti per M.
All'evidenziazione del menů laterale con trigget simulo il click sulla via 
arrivata con la querystring , lanciando la mappa Google utilizzando sempre 
le stesse routine scritte in precedenza.
Immediatamente il flusso del codice va avanti e dovrebbe far vedere la 
posizione del logo sulla mappa allo zoom appropriato. E lo fa! Ma tolto gli 
alert che mi servivano per controllare il valore delle variabili non 
funziona piů.
Penso dipenda dal fatto che per il codice che arriva alla mappa Google il 
menů laterale non sia ancora nel DOM (eppure utilizzo live per costruirlo, 
live che č indispensabile quando si passa, per esempio, dalle vie in A alle 
vie in C cambiando il menu laterale)
Dopo diversi tentativi, che non sto a descriverti, sono ripiegato su di una 
lettura del record dal database, record di cui arriva l'ID con la query 
string. Lancio poi la mappa per la via subito dopo l'evidenziazione del menu 
laterale, passando perň i valori letti nel db (non usabdo trigget). Mi rendo 
conto che č un ripiego e se hai una qualche idea per evitarlo e me la vuoi 
dire ti ringrazio anticipatamente.
Saluti
Leonardo
 
 

 dire ti ringrazio anticipatamente.
 
Come ti dissi, per me è un po' un ripiego anche `trigger`, usato in
questo modo. Ma per capire dove sta il problema, va fatta una certosina
opera di debugging.


Ho appurato che il trigger funziona se prima faccio un alert e solo cosě.
Ho provato con un numero e con una vaiabile numerica e non c'č differenze
Sembra che la variabile con l'ID non esista fino a che non vien fatto un 
alert.
Con il php ho perfino salvato al variabile in un file esterno 
NumeroIdStrada.js
che contiene
var idviaRICHIESTA = 256;
file che includo con
<script type="text/javascript" src="NumeroIdStrada.js"></script>
e se faccio l'alert per vedere se c'č funziona tutto e idviaRICHIESTA da, in 
wquesto caso 256
se tolgo l'alert nulla da fare
non funziona
mi pare incredibile
Sembrerebbe un problema di passaggio di valori da PHP a javascript, ma la 
via iniziale del gruppo la trovo in PHP e la passo e javascript e funziona
Saluti
Leonardo
 
 
 
 
 

 On 19/10/11 17:23 , 
leonar...@gmail.com
 wrote:
Per ricapitolare, ho scritto un po' di furie e non sono stato chiaro.
 
Così funziona
alert("idviaRICHIESTA : "+idviaRICHIESTA);
 $("#Nidx"+ idviaRICHIESTA).trigger("click");
 
Così NON funziona
// alert("idviaRICHIESTA : "+idviaRICHIESTA);
 $("#Nidx"+ idviaRICHIESTA).trigger("click");
 
 
Così funziona
alert("idviaRICHIESTA : "+idviaRICHIESTA);
 $("#Nidx"+256).trigger("click");
 
Così non fuziona
// alert("idviaRICHIESTA : "+idviaRICHIESTA);
 $("#Nidx"+256).trigger("click");
 
Sembra che la variabile esiste solo dopo alert
Il che non mi pare abbia molto senso, che sia un bug di jquery?.
Saluti
Leonardo
 
 

  $("#Nidx"+ idviaRICHIESTA).trigger("click");
 
Quindi se fai un debug che accade? Puoi fare ad esempio:
 
    console.log("idviaRICHIESTA : "+idviaRICHIESTA);
 
    console.log($("#Nidx" + idviaRICHIESTA).size());
    console.log($("#Nidx" + idviaRICHIESTA)[0]);
 
    $("#Nidx"+ idviaRICHIESTA).trigger("click");
 
E, *soprattutto* aggiungere qualcosa nella funzione associata al click
di quegli elementi:
 
    console.log("clicked!");
 
In modo da capire che il click è stato effettivamente eseguito.

 ha scritto nel messaggio 
news:4EA046E1...@ID-171124.news.individual.net...

Ho capito cosa mi chiedi, utilizzo FireFox e aperto al consol, come si usa?
Mi pui dare un link che mi documento?
Grazie
Leonardo
 
 

 Grazie
 
Prego