PDA

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 ^_^