ফায়ারব্যাগ ফিক্সড () কে কেন বলে না?


95

আমি 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 কোনও ফাংশন নয়
মিজানুর রহমান

উত্তর:


177

toFixedঅ-সংখ্যাগত পরিবর্তনশীল ধরণের কোনও পদ্ধতি নয়। অন্য কথায় Lowএবং Highএটি স্থির করা যায় না কারণ আপনি যখন জাভাস্ক্রিপ্টে কোনও কিছুর মান পেয়ে যাবেন তবে এটি স্বয়ংক্রিয়ভাবে স্ট্রিংয়ের ধরণে সেট হয়ে যায়। ব্যবহার parseFloat()(বা parseInt()একটি র্যাডিক্স সঙ্গে, যদি একটি পূর্ণসংখ্যা) আপনি সংখ্যার যা সক্ষম করবে বিভিন্ন পরিবর্তনশীল ধরনের রূপান্তর করতে অনুমতি দেবে toFixed()কাজ ফাংশন।

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

আপনি চিহ্নটির পরে প্রথম বন্ধনী এবং উক্তিগুলি ভুলে গেছেন, তাই না?
এরি ওয়েসবার্গ

4
@ আরিওয়াইস $SliderValFromহল কোনও ফাংশন নয়, ওপি দ্বারা ব্যবহৃত পরিবর্তনশীল নাম
জেরেমি

@ জেরেমি আপনি ঠিক বলেছেন, আমি আসল পোস্টের দিকে মনোযোগ দিই নি ... আমি কেবল তাদের পার্সফ্লোয়েট ($ ('স্লাইড')) সমাধানের দিকে তাকিয়ে যারা বলেছি তাদের জন্য আমি বলেছিলাম
আরি ওয়েসবার্গ

93

কারণ Lowএটি একটি স্ট্রিং।

.toFixed() শুধুমাত্র একটি সংখ্যা নিয়ে কাজ করে।


করার চেষ্টা করুন:

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

ধন্যবাদ আমার ত্রুটি স্থির করে। ফায়ারফক্স ব্রাউজারে এই সমস্যার মুখোমুখি।
শিবরাজআরএইচ

27

Low একটি স্ট্রিং।

.toFixed() শুধুমাত্র একটি সংখ্যা নিয়ে কাজ করে।

এই জাতীয় সমস্যা থেকে উত্তরণের একটি সহজ উপায় হ'ল ধরণের জবরদস্তি ব্যবহার করা :

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

স্ট্রিংটিকে সংখ্যায় রূপান্তর করতে 1 টি বাহিনীকে গুণিত করে মান পরিবর্তন করে না। জেএসফিডাল কোড এখানে


4
ফিক্সড (..) দিয়ে একটি অক্ষর সংরক্ষণ করুন: পি
ফ্রাঙ্ক

2

আপনাকে সংখ্যার ধরণের রূপান্তর করতে হবে:

(+Low).toFixed(2)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.