PDA

View Full Version : سوال: مشکل در اجرای جاوااسکریپت در مسترپیج



871051
چهارشنبه 21 خرداد 1393, 12:20 عصر
سلام بر همه
من در برنامه ای که نوشتم نیاز دارم تا برای هر کالا مدت زمان باقی مانده برای ارائه محصول بصورت معکوس نمایش داده شو به همین علت از کد جاوااسکریپت استفاده کردم.
این کد رو در قسمت code behind نوشتم. تا زمانیکه از مستر پیج در سایت استفاده نمی کردم کد به درستی کار میکرد. اما زمانیکه از مسترپیج استفاده کردم دیگه کد کار نکرد . درسایت های مختلفی گشتم و راه حل های ارائه شده رو امتحان کردم ولی متاسفانه هنوز کدم کار نمیکنه.

لطفا راهنمایی کنید.

کد :

public void jsstringbuilder(string currenttime, string starttime, string elementid, string i) {
StringBuilder jsstring = new StringBuilder();


jsstring.Append("<script language='JavaScript' type='text/javascript'>");
jsstring.Append("var currentTime" + i + " = new Date('" + currenttime + "');");
jsstring.Append("var sta" + i + "='" + starttime + "';");
jsstring.Append("var startDate" + i + " = new Date(sta" + i + "); ");
jsstring.Append(" function d" + i + "(){ currentTime" + i + "*=1; currentTime" + i + "+=1000; var dif" + i + "=startDate" + i + "-currentTime" + i + "; var s" + i + "=1000; var m" + i + "=1000*60; var h" + i + "=1000*60*60; var d" + i + "=1000*60*60*24; ");
jsstring.Append(" var days" + i + "=Math.floor(dif" + i + "/d" + i + "); dif" + i + "-=days" + i + "*d" + i + "; if (dif" + i + "<=0)dif" + i + "=0; ");
jsstring.Append(" var hours" + i + "=Math.floor(dif" + i + "/h" + i + "); dif" + i + "-=hours" + i + "*h" + i + "; if (dif" + i + "<=0)dif" + i + "=0; ");
jsstring.Append(" var minutes" + i + "=Math.floor(dif" + i + "/m" + i + "); dif" + i + "-=minutes" + i + "*m" + i + "; if (dif" + i + "<=0)dif" + i + "=0;");
jsstring.Append(" var seconds" + i + "=Math.floor(dif" + i + "/s" + i + "); ");
jsstring.Append(" document.getElementById(\"" + elementid + "\").innerHTML=days" + i + "+\" روز \"+hours" + i + "+\" ساعت \"+minutes" + i + "+\" دقیقه \"+seconds" + i + "+\" ثانیه\"; ");


jsstring.Append("var element = document.getElementById('" + elementid + "');");
jsstring.Append("element.setAttribute('style', 'color:green;font-family:B Kamran;font-size:18pt;');");






jsstring.Append("if(days" + i + " ==0 && hours" + i + "==0 && minutes" + i + " ==0 && seconds" + i + " ==0){ document.getElementById(\"" + elementid + "\").innerHTML=\"این آگهی منقضی شده است\".toString(); clearInterval(myvar" + i + "); }");


jsstring.Append(" } var myvar" + i + "=setInterval(\"d" + i + "()\",1000); ");
jsstring.Append("</script>");






Page.ClientScript.RegisterClientScriptBlock(Page.G etType(), "kk" + i, jsstring.ToString());


}

raziee
پنج شنبه 22 خرداد 1393, 02:33 صبح
با سلام
elementid رو بررسی کنید.
زمانی که از MasterPage استفاده میکنید(با بهتر بگم از هر Object سمت سرور مثل UserControl,PlaceHolder,... )برای اینکه Id های اشیاء تداخلی با هم نداشته باشن ASP.Net یک شناسه اختصاصی به هر کنترل ServerSide میده که میتونید بوسیله ی ClientId بهش دسترسی داشته باشید.