można wykorzystać metodę replace() aby uniknąć podwójnych cudzysłowach:
for (var i = 0; i < images.length; ++i) {
gallery += '<img width="250" height="250" src="' + images[i].src
+ '" title="' + images[i].title.replace(/\"/g, '\\"') + '" />';
}
EDIT: Rezultatem będzie poprawny łańcuch JavaScript, ale nie będzie działał jako znacznik HTML, ponieważ analizator składni HTML nie rozpoznaje odwrotnych ukośników. Będziesz albo trzeba zastąpić podwójne znaki cudzysłowu z apostrofami w tytule obrazu:
for (var i = 0; i < images.length; ++i) {
gallery += '<img width="250" height="250" src="' + images[i].src
+ '" title="' + images[i].title.replace(/\"/g, "'") + '" />';
}
lub odwrócić rodzaje cudzysłowu znaczników:
for (var i = 0; i < images.length; ++i) {
gallery += "<img width='250' height='250' src='" + images[i].src
+ "' title='" + images[i].title + "' />";
}
Nie trzeba podwójnie uciekać, ponieważ jest w pojedynczych cudzysłowach. Plus, 'replace' zajmie się tylko pierwszym cytatem, chyba że zrobisz'/\ "/ g'. –
@Jeff, masz rację co do' replace() ', thanks :) Ale co masz na myśli przez' double escape'? –
Masz ''\\"' ', ale naprawdę chcesz' '\ "''. Jest to ciąg literowy z jednym cudzysłowem, więc nie musisz uciekać od niczego, łącznie z ukośnikiem –