फायरबग ने फ़िक्सड () को एक फ़ंक्शन क्यों नहीं कहा है?


93

मैं jQuery 1.7.2 और jQuery UI 1.9.1 का उपयोग कर रहा हूं। मैं एक स्लाइडर के भीतर नीचे दिए गए कोड का उपयोग कर रहा हूं। (Http://jqueryui.com/slider/)

मेरे पास एक फ़ंक्शन है जो दो मूल्यों का परीक्षण करना चाहिए और दो मूल्यों के बीच अंतर के आधार पर उन्हें पुन: स्वरूपित करता है (उपयुक्त दशमलव स्थान पर)। यदि अंतर 10 से अधिक है, तो मैं पूर्णांक को पार्स करूंगा। यदि अंतर 5 से अधिक है, तो इसे एक दशमलव रखना चाहिए। बाकी सब, मैं दो डेसीमल रखूंगा।

जब मैं दो मूल्यों को दर्ज करता हूं जिनमें अंतर होता है जो दस या उससे कम है, तो मैं फ़िक्स्ड () फ़ंक्शन का उपयोग करता हूं। और, फायरबग में, मुझे एक त्रुटि दिखाई देती है:

TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);

क्या कुछ सरल है जो मैं गलत कर रहा हूं?

यहाँ मेरा कोड है:

var Low = $SliderValFrom.val(),
High = $SliderValTo.val();

// THE NUMBER IS VALID
if (isNaN(Low) == false && isNaN(High) == false) {
    Diff = High - Low;
if (Diff > 10) {
      Low = parseInt(Low);  
  High = parseInt(High);    
} else if (Diff > 5) {
       Low = Low.toFixed(1);
       High = High.toFixed(1);
} else {
       Low = Low.toFixed(2);
   High = High.toFixed(2);
}
}

मुझे भी यही समस्या है। लेकिन स्थानीय अपने काम में। जब लाइव में यह एक त्रुटि दिखाते हैं - TypeError: value.sell_price.toFixed एक फ़ंक्शन नहीं है
— मिज़ानुर रहमान

जवाबों:


175

toFixedगैर-संख्यात्मक चर प्रकारों की एक विधि नहीं है। दूसरे शब्दों में, Lowऔर Highतय नहीं किया जा सकता क्योंकि जब आपको जावास्क्रिप्ट में किसी चीज़ का मूल्य मिलता है, तो यह स्वचालित रूप से एक स्ट्रिंग प्रकार पर सेट हो जाता है। parseFloat()(या parseInt()एक मूलांक के साथ, अगर यह एक पूर्णांक है) का उपयोग करना आपको विभिन्न चर प्रकारों को संख्याओं में बदलने की अनुमति देगा जो toFixed()फ़ंक्शन को काम करने में सक्षम करेगा ।

var Low  = parseFloat($SliderValFrom.val()),
    High = parseFloat($SliderValTo.val());

आप $ साइन के बाद कोष्ठक और उद्धरण भूल गए, क्या आपने नहीं किया?
— अरी वैसबर्ग

1
@AriWais $SliderValFromवह चर नाम है जिसका उपयोग ओपी द्वारा किया जाता है, न कि फ़ंक्शन
— जेरेमी

@ जेरेमी आप सही हैं, मैंने मूल पोस्ट पर ध्यान नहीं दिया ... मैंने सिर्फ उन लोगों से कहा जो सीधे इसके पार्सफ्लोट ($ ('स्लाइड')) के समाधान की तलाश में आते हैं। वैल ())
— एरी वैसबर्ग

91

ऐसा इसलिए है क्योंकि Lowएक स्ट्रिंग है।

.toFixed() केवल एक संख्या के साथ काम करता है।


करने की कोशिश करो:

Low = parseFloat(Low).toFixed(..);

फिक्स्ड मेरी त्रुटि, धन्यवाद। फ़ायरफ़ॉक्स ब्राउज़र में इस समस्या का सामना करना पड़ा।
— शिवराजआरएच

26

Low एक तार है।

.toFixed() केवल एक संख्या के साथ काम करता है।

इस तरह की समस्या को दूर करने का एक सरल तरीका यह है कि टाइप ज़बरदस्ती का उपयोग करें :

Low = (Low*1).toFixed(..);

स्ट्रिंग को संख्या में परिवर्तित करने और मान को परिवर्तित नहीं करने के लिए कोड को 1 बलों द्वारा गुणा करना। यहाँ JSFiddle कोड ।


1
पी: के साथ (+ कम) .toFixed (..) एक चरित्र को बचाने
— फ्रैंक

2

आपको संख्या प्रकार में कनवर्ट करने की आवश्यकता है:

(+Low).toFixed(2)

0

एक फ़ंक्शन में, के रूप में उपयोग करें

render: function (args) {
    if (args.value != 0)
        return (parseFloat(args.value).toFixed(2));


},
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.