ورود

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">&nbsp;</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 داشت ببخشید.( سعی کردم درست بنویسم)