2012-01-17 11 views
6

मैं जावास्क्रिप्टक्या मैं जावास्क्रिप्ट में गलत तरीके से तारों से बच रहा हूं?

var content = '<a href=\"#\" onclick=\"displayContent(\"TEST\")\">Whatever</a>'; 

$("#placeHolder").html(content); 

में एक क्लिक करने योग्य लिंक बनाने के लिए कोशिश कर रहा हूँ, लेकिन मैं एक त्रुटि

Uncaught SyntaxError: Unexpected token }

बार आ रही है कि दोहरे उद्धरण चिह्नों से बचने और एक लिंक बनाने के लिए नहीं सही तरीका है?

+1

यहाँ लापता कोड है। आपके द्वारा प्रदान किए गए कोड नमूने में कोई} वर्ण नहीं हैं। – ceejayoz

+0

लगता है कि कारण इस स्निपेट के दायरे से बाहर है। – Dykam

+0

आप कम से कम –

उत्तर

7

आप केवल एकल उद्धरण

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>' 

से बचने के लिए की जरूरत है bozdoz कहते हैं:

You escape single quotes that are within single quotes; you escape double quotes that are within double quotes


लेकिन क्यों

var content = $("<a />").attr("href", "#").text("Whatever").click(function(){ 
    displayContent('TEST') 
}); 

नहीं है या नाथन कहते हैं:

var content = $('<a href="#">Whatever</a>').click(
    function() { displayContent('TEST') 
}); 
+1

इसमें जोड़ने के लिए: आप सिंगल कोट्स के भीतर सिंगल कोट्स से बचते हैं, आप डबल कोट्स से डबल कोट्स से बचते हैं। – bozdoz

+0

@bozdoz - मैं इसे बेहतर नहीं कह सकता था, इसलिए मैंने कोशिश नहीं की। संपादन देखें - धन्यवाद और +1 –

+0

ऐसा लगता है लेकिन अगर मैं इसे ("टेस्ट") में बदलता हूं तो मुझे एक ही त्रुटि मिलती है? वह – CodeCrack

0

आपको उनसे बचने की आवश्यकता नहीं है!

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>'; 

$("#placeHolder").html(content); 

बस, इस तरह यह है के रूप में आप आमतौर पर " से बचने के लिए की जरूरत नहीं है, एक ' में embeded में जब;

लेकिन किसी फ़ंक्शन में पैरामीटर होने पर आपको ' वर्णों से बचने की आवश्यकता है।

+0

यह काम नहीं करेगा (आपने 'प्रदर्शन सामग्री' के साथ-साथ 'ऑनक्लिक' विशेषता मान पर पैरामीटर के लिए डबल कोट्स का उपयोग किया है)। –

1

आपको केवल अपने उद्घाटन और समापन उद्धरणों द्वारा उपयोग किए जाने वाले समान प्रकार के उद्धरणों से बचने की आवश्यकता है। आपके उदाहरण में, आप अनावश्यक रूप से डबल कोट्स से बच रहे हैं क्योंकि आपकी स्ट्रिंग एकल उद्धरणों में लपेटी गई है। ऐसा कहा जा रहा है कि onclick कथन में दोहरे उद्धरणों के कारण पार्सर को displayContent() पर कॉल के साथ समस्याएं होंगी।

बजाय इस कोशिश करें,:

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>'; 
2

आप इस जैसे तत्वों बनाने के द्वारा कि गंदगी से बचने कर सकते हैं:

var content = $("<a>", { 
    href: "#", 
    text: "whatever", 
    click: $.proxy(displayContent, 0, "TEST") 
}); 
+0

$ .proxy - मुझे इसे एक +1 देखना होगा :) –

+0

यह '$ .proxy (डिस्प्ले सामग्री, शून्य, 0," परीक्षण ") नहीं होना चाहिए; अन्यथा 0 नहीं (असफल) कोशिश नहीं करेगा 'इस' पर सेट करने के लिए? –

+0

@AdamRackis पहला तर्क फ़ंक्शन है, दूसरा संदर्भ है ('0' 'शून्य' से लिखने के लिए छोटा है) और शेष करीबी तर्क हैं। घुमाव 1.6 में जोड़ा गया था, मुझे लगता है कि यह भी दस्तावेज नहीं है। मूल 'फंक्शन # बाइंड' हमेशा तर्कों को भी घुमाता है, इसलिए यह थोड़ी अजीब '$ .proxy' पहले नहीं था। – Esailija

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