2010-12-17 13 views
7

में डबल कोट्स से बचने से मैं HTML को तोड़ने से नीचे images[i].title को कैसे रोक सकता हूं यदि इसमें डबल कोट्स हैं?जावास्क्रिप्ट: HTML

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

उत्तर

6

आप दोहरे उद्धरण चिह्नों से बचने के लिए replace() विधि का उपयोग कर सकते हैं:

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

संपादित करें: परिणाम होगा एक मान्य जावास्क्रिप्ट स्ट्रिंग, लेकिन HTML मार्कअप के रूप में काम नहीं करेगा क्योंकि HTML पार्सर बैकस्लैश से बच नहीं पाता है।

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

या अपने मार्कअप में बोली प्रकार को उलटने:

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

आपको इसे छोड़ने की आवश्यकता नहीं है, क्योंकि यह सिंगल कोट्स में है। इसके अलावा, 'प्रतिस्थापन' केवल पहले उद्धरण का ख्याल रखेगा जब तक कि आप '/ \"/g' नहीं करते हैं। –

+0

@ जेफ, आप 'प्रतिस्थापन()' के बारे में सही हैं, धन्यवाद :) लेकिन आपका मतलब क्या है 'डबल भागो'? –

+0

आपके पास ''\\"' है, लेकिन आप वास्तव में '' \ "'' चाहते हैं। यह एक सिंगल-उद्धृत शाब्दिक स्ट्रिंग है, इसलिए आपको स्लैश समेत कुछ भी बचने की आवश्यकता नहीं है। –

1

आपको अपना शीर्षक स्ट्रिंग पर की जगह फोन कर सकते हैं:

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

कोई भी बिल्कुल सही है करने के लिए लगता है के बाद से आप या तो अपनी छवि शीर्षक में एकल उद्धरण के साथ दोहरे उद्धरण वर्ण प्रतिस्थापित करना होगा मेरी राय में जवाब दें:

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

यह सभी उद्धरण ले लेती है और आप डबल उद्धरण के साथ खत्म हो, और वे प्रतिनिधित्व कर रहे हैं एक html में प्रारूप मान्य है।

+0

यह सही उत्तर है क्योंकि आप एक HTML विशेषता आउटपुट कर रहे हैं, इसलिए आपको उद्धरण के लिए HTML विशेषता एन्कोडिंग (" ") के लिए जावास्क्रिप्ट एन्कोडिंग नहीं करना है। –

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

यही वह है जिसे आप ढूंढ रहे हैं। भले ही आपके रंग विजुअल स्टूडियो में "ऑफ" दिखें।

\ निम्न उद्धरण से बच निकला। जीआई सभी अवसरों के लिए एक प्रतिस्थापन करता है।

+0

यह केवल उन गुणों के लिए सच है जिनमें यूआरएल है, आमतौर पर आप मानते हैं एचटीएमएल को विशेषता के मान को एन्कोड करें, यूआरएल उन्हें एन्कोड न करें। – HoLyVieR

संबंधित मुद्दे