مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

farshid6420

عضویت از 1394/02/26

چرا تابع ()parseInt در جاوا اسکریپت عمل نمیکند؟؟!!

  • پنجشنبه 13 مهر 1396
  • 09:16
تشکر میکنم

سلام
من یک تاریخ را از  ورودی کاربر گرفتم و توسط تابع ()split در جاوا اسکریپت اونو جداسازی کردم و در آرایه  قرار دادم. بعدش که میخولم اک تک اندیسهای آرایه رو با تابع ()parseInt به نوع عددی تبدیل کنم و به سمت فانکشن دیگه ای بفرستم شون متاسفانه تابع parseInt برای اک اک شون مقدار NaN برمیگردونه در حالیکه مقادیر از نوع String هستند. ولی اگه همون مقادیر رو بصورت رشته ای (مثلاً": "1376") وارد کنم تابع parsrInt عمل میکنه.

مثال : 

var date="1396/05/06";
var splitString= date.split("/");
var  a1= parseInt(splitString[0]); // ==> NaN
var  a2= parseInt(splitString[1]); // ==> NaN
var  a3= parseInt(splitString[2]); // ==> NaN

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • پنجشنبه 13 مهر 1396
  • 09:47

با سلام

دوست عزیز خروجی تابع Date  به صورت زیر هست و شما نمی تونید با کارکتر "/" اون رو split کنید 

Thu Oct 05 2017 09:45:40 GMT+0330 (Iran Standard Time)

کاربر سایت

farshid6420

عضویت از 1394/02/26

  • پنجشنبه 13 مهر 1396
  • 14:20

فرمایش شما کاملاً درست و متین ولی متاسفانه اگه بیشتر به سئوالم دقت میکردید متوجه منظور بنده میشدید.

اونجا هم عرض کردم تاریخی که از کاربر دارم دریافت میکنم...یعنی چی؟ یعنی یک رشته با فرمت تاریخ و جدا کننده (/).

پس می تونم اسپلیت کنم و ضمن اینکه توی دیباگ کردنش داره مقادیر روز-ماه-سال رو در اندیس های ارایه String به من نشون میده.

شما اگه موردیکه اون بالا در موردش صحبت کردم رو توی یک فایل موچولوی جاوا اسکریپت تست کنید متوجه میشید که parseInt روی اندیس های رشته ای عمل نمیکنه... حای اندیسها رو ریختم توی متغییری دیگه و بعد متغیییرها رو بهش پاس دادم بازم نشد... حتی مجدداً از ()toString براشون استفاده کردم باز هم Nan برمیگردونه.

در هر صورت سپساگزارم از حسن نیست و توجه تون به سئوال بنده .

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • پنجشنبه 13 مهر 1396
  • 16:10

دوست عزیز بنده کدتون رو تست کردم مشکل از ورودی که از کاربر می گیرید 

var date = "1396/07/13";
var splitString = date.split("/");

var a1 = parseInt(splitString[0]); // ==> 1396
var a2 = parseInt(splitString[1]); // ==> 7
var a3 = parseInt(splitString[2]); // ==> 13
alert(a1 + "-" + a2 + "-" + a3);

کاربر سایت

farshid6420

عضویت از 1394/02/26

  • پنجشنبه 13 مهر 1396
  • 20:18

تشکر از شما.

عجیبه!!! آخه دقیقاً من حتی ورودی به شکل مثالم هم که توی جاوا اسکریپتم میدم و Split میکنم هنوز هم بهم Nan میده!!!!

پس احتمالاً مشکل از سیستم من باید باشه. یکبار VS2015 رو Repair کنم ببینم مشکل حل میشه یا نه؟!!

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)