View Full Version : سوال: نوشتن حرف به حرف متن
dr_csharp
پنج شنبه 02 آبان 1387, 09:52 صبح
چطور میتونم یک جمله رو که بصورت حرف حرف تکمیل میشه داشته باشم ؟
emad_67
پنج شنبه 02 آبان 1387, 11:06 صبح
سلام دوست عزیز
من اینجوری تونستم بنویسم:
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>body</title>
<script type="text/javascript">
var s="my name is emad";
var i=0;
function w1()
{
document.getElementById("box").innerHTML+=s.substring(i,++i);
var timeout = setTimeout("w1()",100);
if(i==s.length)
{
clearTimeout(timeout);
}
}
</script>
</head>
<body onload="w1();">
<div id="box" style="border: 1px solid #000000"> </div>
</body>
</html>
در ابتدا من رشته مورد نظر روی توی s قرار دادم و i رو هم به عنوان تفکیک کننده حروف در نظر گرفتم.
تابع w1 در متد onload برچسب body فراخوانی میشه و توسط substring اولین کاراکتر از متن رو انتخاب و به div اضافه میکنیم. یعنی در ابتدا که i=0 هست مقدار substring میشه:
document.getElementById("box").innerHTML+=s.substring(0,1);
که اولین کاراکتر جدا میشه و توی div قرار میگیره. در ادامه توسط این خط:
setTimeout("w1()",100);
تابع w1 مجددا توسط تابع setTimeout با فاصله 100 میلی ثانیه فراخوانی میشه و کاراکتر بعدی در div قرار میگیره و همین طور تا آخر. در هر مرحله هم چک میکنیم ببینیم که آیا i برابر طول رشته شده یا نه، اگر شده بود توسط تابع clearTimeout از ادامه فراخوانی ها جلوگیری میکنیم.
من زیاد جاوا اسکریپت کار نکردم، شاید بشه خیلی بهتر نوشت.
dr_csharp
یک شنبه 05 آبان 1387, 08:58 صبح
من کد رو به این صورت تغییر دادم :
var temp="this is a test";
var i=0;
function SetDailyStatement()
{
document.getElementById("daily").innerHTML+=temp.substring(i,++i);
var timeout = setTimeout("SetDailyStatement()",200);
if(i==temp.length)
{
document.getElementById("daily").innerHTML="";
i=0;
}
}
سوالی که الان هست :
چطوربا Load صفحه این Function رو فراخوانی کنیم و متن مورد نظر رو از سمت سرور به تابع پاس کنیم ؟
emad_67
یک شنبه 05 آبان 1387, 09:19 صبح
چطوربا Load صفحه این Function رو فراخوانی کنیم و متن مورد نظر رو از سمت سرور به تابع پاس کنیم ؟توی مثال قبل من اینجوری فراخوانی کرده بودم:
<body onload="w1();">
ولی در صورتی که asp.net کار میکنی میتونی با استفاده از RegisterClientScriptBlock تابع جاوااسکریپت خودت رو به سمت کلاینت بفرستی و با RegisterStartupScript تابع رو فراخوانی کنی.
برای اینکه متنت رو به کلاینت بفرستی هم میتونی از hiddent field استفاده کنی و بعد توی تابعی ئی که به کلاینت فرستادی اونو بخونی.
dr_csharp
یک شنبه 05 آبان 1387, 09:55 صبح
توی مثال قبل من اینجوری فراخوانی کرده بودم:
<body onload="w1();">
ولی در صورتی که asp.net کار میکنی میتونی با استفاده از RegisterClientScriptBlock تابع جاوااسکریپت خودت رو به سمت کلاینت بفرستی و با RegisterStartupScript تابع رو فراخوانی کنی.
برای اینکه متنت رو به کلاینت بفرستی هم میتونی از hiddent field استفاده کنی و بعد توی تابعی ئی که به کلاینت فرستادی اونو بخونی.
متاسفانه چون با MasterPage کار میکنم و فقط در یک صفحه به فراخوانی این تابع نیاز دارم به body دسترسی ندارم ! توی onload تگهای Div موجود در page هم که جواب نمیده !
ضمنا من برای مقدار دهی از سمت سرور، یه متغیر سراسری تو codebehind تعریف کردم وتو scrip از همون متغیر استفاده میکنم :
var temp=<%publicVariable%>
emad_67
یک شنبه 05 آبان 1387, 12:55 عصر
اینو توی رویداد load مستر پیج بنویس:
string script;
Page.ClientScript.RegisterClientScriptBlock(typeof (Page),"script",script,true);
Page.ClientScript.RegisterStartupScript(typeof(Pag e),"load","SetDailyStatement();",true);
من یه متغیر به نام script تعریف کردم اولش که خودت کد تابع جاوا اسکریپت و اون مقداری رو که میگی سراسری تعریف رو بهش بده. بعد توسط RegisterClientScriptBlock تابع به کلاینت فرستاده میشه و بعد هم توسط RegisterStartupScript فراخوانی میشه. البته الان من vs رو نصب ندارم و اگر مشکل syntax داشت ببخشید.( سعی کردم درست بنویسم)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.