View Full Version : [javascript] stringhe e apostrofi
CercoAiutoo
11-01-2010, 21:37
Ciao a tutti !! Con questo codice ( vedi in basso ) inserisco nel tag con id "results" i dati che prelevo tramite ajax da una struttura json "data". Il problema nasce quando in "data.books[i].name" c'è una stringa con apostrofo ( tipo "l'arte del tempo" o "il volo dell'acquilone"). In tal caso infatti la funzione onclick non funziona. Come potrei risolvere ?? Grazie per l' attenzione :)
e = document.getElementById('results');
for(i=0; i<data.books.length; i++) {
e.innerHTML += "<li><a href=\"#\" onclick=\"document.getElementById(\'search-q\').value='" + data.books[i].name + "';\" >" + data.books[i].name + "</a></li> ";
}
wingman87
11-01-2010, 22:18
Potresti provare facendo un replace di tutti gli apostrofi con \'
CercoAiutoo
11-01-2010, 23:24
Potresti provare facendo un replace di tutti gli apostrofi con \'
Avevo gia provato ma stranamente non funziona :stordita:
Per ora ho rimpiazzato gli apostrofi con ` ( il codice html dell' accento grave ) e funziona.
Però preferirei usare gli apostrofi invece degli accenti gravi :fagiano: :help:
wingman87
11-01-2010, 23:46
La console degli errori di firefox ti dice qualcosa di utile?
EDIT: Mi è venuta in mente anche un'altra idea: visto che il valore che vuoi assegnare è lo stesso del nodo a su cui stai lavorando potresti usare this.value (o è this.innerHTML? scusa ma non sono praticissimo di javascript, comunque credo che tu abbia capito):
e.innerHTML += "<li><a href=\"#\" onclick=\"document.getElementById(\'search-q\').value=this.value;\" >" + data.books[i].name + "</a></li> ";
CercoAiutoo
12-01-2010, 00:41
La console degli errori di firefox ti dice qualcosa di utile?
EDIT: Mi è venuta in mente anche un'altra idea: visto che il valore che vuoi assegnare è lo stesso del nodo a su cui stai lavorando potresti usare this.value (o è this.innerHTML? scusa ma non sono praticissimo di javascript, comunque credo che tu abbia capito):
e.innerHTML += "<li><a href=\"#\" onclick=\"document.getElementById(\'search-q\').value=this.value;\" >" + data.books[i].name + "</a></li> ";
In realtà l'avevo semplificato e il valore che voglio assegnare non è lo stesso del nodo.
Comunque ho risolto ridando un' occhiatina alla console come hai detto :D
Ecco l' errore:
name_quote = dati.books[i].name.replace(/[']/g,"\'");
risolto con ( da notare il doppio slash ):
name_quote = dati.books[i].name.replace(/[']/g,"\\'");
Thanks ^_^
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.