2010-12-17 17 views

Odpowiedz

6

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 + "' />"; 
} 
+0

Nie trzeba podwójnie uciekać, ponieważ jest w pojedynczych cudzysłowach. Plus, 'replace' zajmie się tylko pierwszym cytatem, chyba że zrobisz'/\ "/ g'. –

+0

@Jeff, masz rację co do' replace() ', thanks :) Ale co masz na myśli przez' double escape'? –

+0

Masz ''\\"' ', ale naprawdę chcesz' '\ "''. Jest to ciąg literowy z jednym cudzysłowem, więc nie musisz uciekać od niczego, łącznie z ukośnikiem –

1

Można zadzwonić wymienić na tytule wyrażenie:

for (i=0;i<=images.length-1;i++){ 
    gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title.replace('"',"'") + '" />'; 
} 
13

Ponieważ nikt nie wydaje się mieć dokładnie prawo odpowiedzieć moim zdaniem:

for (i=0;i<=images.length-1;i++){ 
    gallery += '<img width="250" height="250" src="' + images[i].src 
       + '" title="' + images[i].title.replace(/\"/g,'&quot;') + '" />'; 
} 

zastępuje wszystkie cytaty, a kończy się z podwójnych cudzysłowów, a są one reprezentowane w html format jest prawidłowy.

+0

To jest poprawna odpowiedź, ponieważ wypisujesz atrybut HTML, więc musisz zastosować kodowanie atrybutu HTML dla cudzysłowów (" dla "), a nie kodowanie JavaScript dla nich." –

2
var_name.replace(/\"/gi,'%22'); 

Tego właśnie szukasz. Nawet jeśli twoje kolory wyglądają "wyłączone" w Visual Studio.

\ wymyka się z następującego cytatu. gi zastępuje wszystkie zdarzenia.

+0

Dotyczy to tylko atrybutów zawierających adres URL, zwykle sądzisz, że do HTML zakodować wartość atrybutu, a nie kodować je za pomocą url. – HoLyVieR

Powiązane problemy