PDA

View Full Version : خطا در نمایش ساعت سرور NaN:NaN:NaN



iranajax
یک شنبه 13 بهمن 1392, 15:42 عصر
سلام من از vs2013 استفاده میکنم و میخوام ساعت سرور رو با کمک جاوا اسکریپت نمایش بدم
<script type="text/javascript" language="javascript">
var s_time = setInterval(function () { timer() }, 1000);
function timer() {
var l = document.getElementById("<%= LabelClock.ClientID %>");
var a = l.innerHTML;
var h = parseInt(a.substring(0, 2), 10);
var m = parseInt(a.substring(3, 5), 10);
var s = parseInt(a.substring(6), 10);
s++;
if (s == 60) {
s = 0;
m++;
}
if (m == 60) {
m = 0;
h++;
}
if (h == 24)
h = 0;
var h2 = h.toString();
var m2 = m.toString();
var s2 = s.toString();
if (h < 10)
h2 = '0' + h.toString();
if (m < 10)
m2 = '0' + m.toString();
if (s < 10)
s2 = '0' + s.toString();
l.innerHTML = h2 + ':' + m2 + ':' + s2;

}
</script>
و در سمت سرور
Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
Dim h As String, m As String, s As String
h = DateTime.Now.Hour.ToString().PadLeft(2, "0"c)
m = DateTime.Now.Minute.ToString().PadLeft(2, "0"c)
s = DateTime.Now.Second.ToString().PadLeft(2, "0"c)
LabelClock.Text = h & ":" & m & ":" & s
End Sub
توی vs2010 درست نمایش میده اما توی vs2013
NaN:NaN:NaN لطفا راهنمایی کنید

Majid.Stu66
یک شنبه 13 بهمن 1392, 16:30 عصر
با سلام
دوست عزیز به نظر مشکل از این قسمت از کد هستش


var l = document.getElementById("<%= LabelClock.ClientID %>");در واقع LabelClock مقداری نداره و شما محاسبات رو بر اساس مقداری که از این کنترل میخونی انجام می دی .

iranajax
یک شنبه 13 بهمن 1392, 17:00 عصر
با سلام
دوست عزیز به نظر مشکل از این قسمت از کد هستش
در واقع LabelClock مقداری نداره و شما محاسبات رو بر اساس مقداری که از این کنترل میخونی انجام می دی .

مقداری که فرمودید از اینجا بدست میاد دیگه
Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
Dim h As String, m As String, s As String
h = DateTime.Now.Hour.ToString().PadLeft(2, "0"c)
m = DateTime.Now.Minute.ToString().PadLeft(2, "0"c)
s = DateTime.Now.Second.ToString().PadLeft(2, "0"c)
LabelClock.Text = h & ":" & m & ":" & s
End Sub
LabelClock.Text = h & ":" & m & ":" & s

Majid.Stu66
یک شنبه 13 بهمن 1392, 17:14 عصر
امکانش هست این خط کد

alert(a);
رو بعد از

var a = l.innerHTML;
اضافه کنید و نتیجه رو بگید .

iranajax
یک شنبه 13 بهمن 1392, 17:30 عصر
امکانش هست این خط کد

alert(a);
رو بعد از

var a = l.innerHTML;
اضافه کنید و نتیجه رو بگید .


اولین بار یه مسج باکس خالی میاد بعد پشت سر هم مسج باکس هایی میاد که اینو NaN:NaN:NaN نمایش میده ! یعنی نمیتونه مقدارش رو پاس کنه یا چی LabelClock.Text = h & ":" & m & ":" & s؟

iranajax
یک شنبه 13 بهمن 1392, 17:41 عصر
من کد رو گذاشتم توی پیج لود sub_pageload و کار کرد چرا page_int کار نمیکنه؟

Majid.Stu66
یک شنبه 13 بهمن 1392, 17:42 عصر
مسیج باکس ها به خاطر اون دستور alert هستش و پشت سرهم اومدنش به علت تابع تایمر .
احتمالا قبل از این که رویداد Page_Init ، عمل مقدار دهی LabelClock رو انجام بده اسکریپت شما اجرا میشه در نتیجه چون LabelClock مقدار نگرفته شما تو خروجی NaN:NaN:NaN می بینید .

علت اینکه چرا تو لود کار میکنه ولی تو Init نه شاید تقدم اجرای رویدادها باشه.
باز هم مطمئن نیستم.
امیدوارم دوستان دیگه دقیقتر علت رو بگن.

ali.n93
یک شنبه 13 بهمن 1392, 22:04 عصر
من کد رو گذاشتم توی پیج لود sub_pageload و کار کرد چرا page_int کار نمیکنه؟
چون توی Init هنوز کنترل ها Initialize نشدن که بشه بهشون مقدار داد