2011-04-01 17 views
9

इसके साथ बहुत भाग्य नहीं है। मैं यह निर्धारित करने की कोशिश कर रहा हूं कि कोई var खाली नहीं है या नहीं।जावास्क्रिप्ट के साथ var खाली नहीं है या नहीं, यह जांचने के लिए कैसे करें?

$('#content').mouseup(function() { 

    var selection = getSelected(); 

    if (typeof(selection) !=='undefined') { 
     alert(selection); 
    } 
}); 

क्या यह क्या कर रहा है किसी भी पाठ उपयोगकर्ता का चयन किया है हथियाने है - लेकिन यह एक खाली चेतावनी भले ही उपयोगकर्ता सिर्फ div पर mouseup है पता चलता है।

+1

'getSelected()' कार्य क्या है? –

+0

यदि (चयन) {} –

+0

getSelected() http://stackoverflow.com/questions/5517260/how-to-have-a-popup-after-selecting-text – Mike

उत्तर

7

आपका कोड एक अपरिभाषित मूल्य, जिसका अर्थ है कार्य हमेशा मूल्य किसी तरह का कोई चयन नहीं है, भले ही रिटर्न कि पता लगाने के लिए पूरी तरह से सही है।

उदाहरण के लिए समारोह एक चयन वस्तु (window.getSelection समारोह की तरह) देता है, तो आप isCollapsed संपत्ति की जाँच देखने के लिए अगर चयन खाली है:

if (!selection.isCollapsed) ... 
+0

यह काम करता है, धन्यवाद! – Mike

+0

@ माइक: मुझे डर है कि यह केवल कुछ ब्रॉवर्स में ही काम करेगा। आप जिस फ़ंक्शन का उपयोग कर रहे हैं वह ब्राउज़र, या तो ऑब्जेक्ट, स्ट्रिंग या बूलियन के आधार पर अलग-अलग चीजें देता है। एक निरंतर परिणाम लौटने के लिए फ़ंक्शन को फिर से लिखा जाना चाहिए, या इसका उपयोग करना बहुत कठिन होगा। – Guffa

+0

@ माइक: पाया जा सकता है कि कार्यों की गुणवत्ता की कमी से चिंतित, मैं एक वैकल्पिक विकल्प देता है जो एक सतत परिणाम देता है: http: //blog.guffa।कॉम/2011/04/get-चयनित पाठ एक बेहतर तरह से / – Guffa

15

बस कहते हैं:

if (selection) { 
    alert(selection); 
} 

जावास्क्रिप्ट में सरल सही/गलत परीक्षण TRUE देता सदस्य परिभाषित किया गया है, गैर शून्य, गैर-झूठी, गैर रिक्त स्ट्रिंग, या गैर शून्य।

इसके अलावा, जावास्क्रिप्ट में, कुछ मूल्य undefined या वास्तव में अपरिभाषित (अर्थात्, ऐसी कोई नाम वस्तु मौजूद नहीं है) के बराबर हो सकती है। जैसे

var x = undefined; 
alert(x===undefined); /* true; */ 
alert(x); /* false */ 
x=1; 
alert(x); /* true */ 

alert(y===undefined); /* reference error - there's nothing called y */ 
alert(y); /* reference error */ 
alert(typeof y === "undefined"); /* true */ 

नोट नीचे टिप्पणी के रूप में, यदि आप यकीन है कि अगर कुछ भी सब पर मौजूद नहीं कर रहे हैं, आपको लगता है कि पहले typeof का उपयोग कर परीक्षण करना चाहिए।

+0

+1 यह समझाने के लिए कि यह – drudge

+0

क्यों काम करता है यह ध्यान दिया जाना चाहिए कि यदि चर घोषित नहीं किया गया है तो यह असफल हो जाएगा; यह एक 'संदर्भ त्रुटि' उठाएगा। यदि आपको यह सुनिश्चित करने की आवश्यकता है कि चर मौजूद है * और * इसमें कुछ सच्चाई मूल्य है: 'if (typeof type! == 'अपरिभाषित' && चयन) ...' – Reid

+0

ओपी के क्यू में सही 'nuf - वह स्पष्ट रूप से' चयन 'को परिभाषित करता है , इसलिए मैंने सरलीकृत किया, लेकिन आपका नोट ज्ञान के इस नींव का एक महत्वपूर्ण हिस्सा है। असल में मुझे लगता है कि मेरा जवाब थोड़ा उलझन में हो सकता है जब मैं कहता हूं "परिभाषित किया गया है।" वास्तविकता उलझन में है क्योंकि कुछ वास्तव में अपरिभाषित किया जा सकता है, या 'अपरिभाषित' के बराबर है। –

2

आप बस का उपयोग कर सकते हैं:

if (selection) { 
    alert(selection); 
} 
+1

यह काम नहीं कर रहा है। यह अभी भी एक खाली चेतावनी बॉक्स लाता है। – Mike

+0

क्या यह काम करता है जब var 'अपरिभाषित' होता है? – Thamaraiselvam

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

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