PDA

View Full Version : نشان دادن آیکون loading تا وقتی دستورات یک function به پایان برسد ؟



Mohammad_1984
شنبه 22 مهر 1391, 22:15 عصر
سلام

میخوام تا وقتی دستورات مربوط به تابع "load" اجرا میشود, یک آیکون در صفحه نشان بدم.

راه های مختلف رو چک کردم ولی نشد.

ممنون




<html>
<head>
<title></title>

<script>
function load() {
var text = '';

for (var i = 0; i < 30000; i++)
text += '<tr><td>test</td></tr>';

document.getElementById('tbl').innerHTML = text;
}
</script>

</head>

<body>
<input type="button" onclick="load()" />

<table id="tbl">
</table>
</body>
</html>

pouyan.hosseini
دوشنبه 24 مهر 1391, 14:41 عصر
http://www.netzgesta.de/busy/
hatman mitoone komaket kone tutorialesh ro bekhon

Mohammad_1984
سه شنبه 25 مهر 1391, 11:04 صبح
http://www.netzgesta.de/busy/
hatman mitoone komaket kone tutorialesh ro bekhon

آقا پویان ممنون

ولی من نمیخوام از Library استفاده کنم, میخوام بدونم دل و رودش چه خبره و چطوری میشه با Java Script این کار رو کرد؟

اگر سایتی رو سراغ دارید که مثل W3School توضیح داده باشه میتونه خیلی کمکم کنه

مرسی ازت.

Variable
سه شنبه 25 مهر 1391, 15:26 عصر
خب ساده شدش میشه اینکه در ابتدای شروع تابع . شما یک عکس گیف رو به نمایش بگذاری. در انتها هم اون عکس رو از بین ببری .
یعنی یک عنصر Img در صفحه بذار . و این رو در شروع برنامه مخفی کن. منظورم خصوصیات استایلش هست.
بعد وقتی تابع رو فراخونی کردی. این خصوصیت img رو تغییر بده و به صورت show در بیار .
و در انتهای تابع . دوباره خصوصیت این img رو به مخفی برگردون.


<html>
<head>
<title></title>
<style type="text/css">
#loading{
visibility: hidden;
}

</style>
</head>
<body>
<img src="loader.gif" id="loading" >
<p id="count">
</P>
<script type="text/javascript">
var img=document.getElementById('loading').style;
var counter=document.getElementById('count');
(function showload(){
i=1;
img.visibility="visible";

var start=setInterval(function(){
counter.innerText=i++;
},1000);

setTimeout(function(){
img.visibility="hidden";
clearInterval(start);
},5000);

})();

</script>
</body>
</html>

از تابع ست تایم اوت برای ایجاد تاخیر و از ست اینتروال برای اینکه بهتون نشون بدم چند ثانیه طول میکشه . که اینو فقط برای نشون دادن نحوه کارش گذاشتم
شما میتونی تو شرایط واقعی یعنی وقتی داری یک فایل رو لود میکنی . این ست تایم اوت و اینترول رو پاک کنی

Mohammad_1984
سه شنبه 25 مهر 1391, 16:57 عصر
خب ساده شدش میشه اینکه در ابتدای شروع تابع . شما یک عکس گیف رو به نمایش بگذاری. در انتها هم اون عکس رو از بین ببری .
یعنی یک عنصر Img در صفحه بذار . و این رو در شروع برنامه مخفی کن. منظورم خصوصیات استایلش هست.
بعد وقتی تابع رو فراخونی کردی. این خصوصیت img رو تغییر بده و به صورت show در بیار .
و در انتهای تابع . دوباره خصوصیت این img رو به مخفی برگردون.

از تابع ست تایم اوت برای ایجاد تاخیر و از ست اینتروال برای اینکه بهتون نشون بدم چند ثانیه طول میکشه . که اینو فقط برای نشون دادن نحوه کارش گذاشتم
شما میتونی تو شرایط واقعی یعنی وقتی داری یک فایل رو لود میکنی . این ست تایم اوت و اینترول رو پاک کنی



تست کردم قبلا

ممنون ولی جواب نمیده دوست من

نمیدونم علتش چیه, اینطور نیست که تو یه خط ما visible عکس رو true کنیم همون لحظه عکس نشون داده بشه

فکر کنم با یک thread کار میکنه و دستورات رو همون لحظه اعمال نمیکنه, اصن یه وضی

Variable
سه شنبه 25 مهر 1391, 18:07 عصر
میفهمم چی میگی . انگار خط به خط اجرا نمیشن و به طور موازی دستور پایینی شاید قبل از دستور بالایی اجرا بشه .
فکر میکنم برای اینکار شما باید توابع جاوااسکریپت رو طوری بنویسی که بعد از تمام شدن یک تابع ، تابع دیگری اجرا بشه . اینطور نباشه که توابع درکنار هم باشند. توابع باید تو درتو باشند. یک تابع کالبک تابع دیگری باشه . همونطور که من نوشتم
شما میتونی دوتا تابع داشته باشی . مثلا یکی برای فعال کردن .یکی هم برای غیر فعال کردن . بعد ...
الان اینی که من نوشتم جواب میده . اگه تست کرده باشی .