2012-07-20 17 views
6

सेट करने के लिए एक टर्नरी ऑपरेटर का उपयोग करके मैं एक टर्नरी ऑपरेटर का उपयोग करने की कोशिश कर रहा हूं यह जांचने के लिए कि XML तत्व का मान शून्य है या नहीं। यदि ऐसा है तो मैं चर को एक चीज बनना चाहता हूं। यदि नहीं तो मैं इसे तत्व के मूल्य को वापस करना चाहता हूं। अभी तक मेरे पास इतना ही है।एक परिवर्तनीय

var rating = data.getElementsByTagName("overall_average")[0].childeNodes[0].length > 0 ? data.getElementsByTagName("overall_average")[0].childeNodes[0].nodeValue : "It is empty"; 

उत्तर

5

सबसे छोटा रास्ता:

var rating = (data.getElementsByTagName('overall_average')[0].childNodes[0] || {}).nodeValue || 'It is empty'; 
+0

कृपया समझाओ? – mplungjan

+0

@mplungjan, मैंने अपने उदाहरण में शून्य के लिए जांच करने के लिए '||' ऑपरेटर का उपयोग किया। तो, यदि आपके पास ऐसा कुछ है: 'var x = null || {}; 'तो एक्स' शून्य 'के बजाय खाली' ऑब्जेक्ट 'होगा। आप गुणों के लिए '||' का भी उपयोग कर सकते हैं: 'var x = {} .someProp || 'हैलो'; ', एक्स 'हैलो' होगा। –

+0

धन्यवाद! क्या आप यह बताने में सक्षम होंगे कि मैं कैसे जांच करूंगा कि यह वही चर एक टर्नरी ऑपरेटर में एक संख्या है या नहीं? –

11
यहाँ

:

var node = data.getElementsByTagName('overall_average')[0].childNodes[0]; 
var rating = node ? node.nodeValue : 'It is empty'; 

ध्यान दें कि यह कोड मामले में (एक त्रुटि) फेंकता है वहाँ एक एकल "overall_average" तत्व data में नहीं है, ताकि आवश्यकता होने पर उस मामले से बचने के लिए चाहते हो सकता है ...

+0

यह रेटिंग के मूल्य के रूप में NaN फेंकने के लिए जारी है। –

+0

मुझे नहीं पता कि यह ऐसा क्यों करेगा। हम केवल एक नोड का संदर्भ दे रहे हैं और अपने 'नोडवेल्यू' तक पहुंच रहे हैं। मैं ब्रेक-पॉइंट सेट करने और यह जांचने की सलाह देता हूं कि 'नोड' वास्तव में एक नोड संदर्भ है ... –

+0

धन्यवाद। मैंने बस यही किया। एक प्लगइन था जो रेटिंग वैरिएबल को गोल करने की कोशिश कर रहा था। मेरे कोड को एक अज्ञात फ़ंक्शन में ले जाया गया और उसने चाल की। भविष्य के संदर्भ के लिए, हालांकि, क्या आप जानते हैं कि एक चर एक संख्या है या परिणाम के आधार पर कुछ थूकना है या नहीं? मैं इसे फिर से एक टर्नरी ऑपरेटर में पसंद करूंगा। –

1

आपका टर्नरी ऑपरेशन मुझे ठीक लग रहा है। एक बात जो मैं सुझाऊंगा (पठनीयता और ब्रेवटी के लिए) आपके overall_average ऑब्जेक्ट को एक चर के रूप में परिभाषित करना है और इसके बाद इसका संदर्भ देना है।

var overall_average = data.getElementsByTagName("overall_average")[0].childeNodes[0]; 
var rating = overall_average.length > 0 ? overall_average.nodeValue : "It is empty"; 

शुभकामनाएँ!

+0

धन्यवाद। यह समझ में आता है, लेकिन समझ में आता है कि मैं तत्व की एक सूची के माध्यम से चल रहा हूं, यह प्रति चर दो पंक्तियां होगी जिन्हें मैं सेट करने की कोशिश कर रहा हूं। –