ورود

View Full Version : سوال: محدود کردن تعداد دفعات اجرای یک تابع



jamejam123
چهارشنبه 27 شهریور 1392, 19:27 عصر
سلام و خسته نباشید
لطفا به این کد ها یه نگا بندازید
var brandlist = new Array("Porsche","Volkswagen","Audi","BMW");
function newClient(){
var preference = Math.floor((Math.random()*4));
var time = Math.floor((Math.random()*10000)+1);
var client = Math.floor((Math.random()*10)+1);
$("#clients_queue").append('<div class="client client_'+client+'"><span class="preference">Client for '+brandlist[preference]+'</span></div>');

setTimeout(function(){newClient();},time);
}
$("document").ready(function(e) {
newClient();
});


در این کد از هر 5 ثانیه یک دایو به مشخصات بالا به صفحه ام اضافه می شه.
من می خوام اگه تعداد دایو ها به ده رسید دیگه دایوی اضافه نشود مگر اینکه بعد از کم شدن آنها اضافه شود.
می شه راهنماییم کنید
باتشکر فراوان
اینم خود پروژه
http://s1.picofile.com/file/7941263331/web_Module.zip.html
(حجمش 300 kb)

sinoser
چهارشنبه 27 شهریور 1392, 19:47 عصر
چیزی که تو کد میگه با چیزی که شما می گی فرق داره
اولا هر 5 ثانیه اجرا نمیشه برا اساس مقدار time که با فرمول رندم گرفت میشه اجرا میشه

اینو امتحان کنن (ساده ترین راه کنترل)

var brandlist = new Array("Porsche","Volkswagen","Audi","BMW");
var timeOut = null;
var counter = 0;
function newClient(){
alert('s');
var preference = Math.floor((Math.random()*4));
var time = Math.floor((Math.random()*10000)+1);
var client = Math.floor((Math.random()*10)+1);
$("#clients_queue").append('<div class="client client_'+client+'"><span class="preference">Client for '+brandlist[preference]+'</span></div>');
if(++counter < 3)
timeOut = setTimeout(newClient,50);
else
window.clearInterval(timeOut);
}

$(document).ready(function(e) {
newClient();
});

jamejam123
جمعه 29 شهریور 1392, 13:09 عصر
سلام
لطفا به این کد یه نگاهی بندازید
var brandlist = new Array("Porsche","Volkswagen","Audi","BMW");
var timeOut = null;
var counter = 0;
function newClient(){
var preference = Math.floor((Math.random()*4));
var time = Math.floor((Math.random()*1000)+1);
var client = Math.floor((Math.random()*10)+1);
$("#clients_queue").append('<div class="client client_'+client+'"><span class="preference">Client for '+brandlist[preference]+'</span></div>');
var bb=counter++;

$('#clients_queue div').draggable({
drag:function(bb){
bb--;
}
})
if(bb < 10)
timeOut = setTimeout(newClient,1000);
else
window.clearInterval(timeOut);

}




$(document).ready(function(e) {
newClient();
});

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

azamicu
جمعه 29 شهریور 1392, 13:27 عصر
سلام دوست عزیز
یه متغیر سراسری با عنوان counter درست کن و توی تابت مقدارشو زیاد بکن تا بخ 10 برسه و قبل از ورود به تابت مقدار اونو چک کن و اگر کمتر از ده بود اجراش بکن

sinoser
جمعه 29 شهریور 1392, 17:06 عصر
شما متغییر dd رو به عنوان مثلا پارامتر به تابع درگ اضافه می کنی اما نمی دونی که این تابع 2 پارامتر ثابت که اولی رویداد موسه دومی هم اطلاعات درگ رو میده قرار داره در واقع مقدارش rewrite میشه



$(document).ready(function(e) {

var brandlist = new Array("Porsche","Volkswagen","Audi","BMW");
var timeOut = null;
var counter = 0;
var bb
function newClient(){
var preference = Math.floor((Math.random()*4));
var time = Math.floor((Math.random()*1000)+1);
var client = Math.floor((Math.random()*10)+1);
$("#clients_queue").append('<div class="client client_'+client+'"><span class="preference">Client for '+brandlist[preference]+'</span></div>');
bb=counter++;
if(bb < 10)
timeOut = setTimeout(newClient,1000);
else
window.clearInterval(timeOut);

}


$('#clients_queue div').draggable({
drag:function(even,info){
bb--;
} })

newClient();
});

jamejam123
جمعه 29 شهریور 1392, 18:35 عصر
سلام
تشکر فراوان از دوستان عزیز بابت راهنمایی هاشون
تو این کد من می خوام بعد از این که ده تا دایو به صفحه ام اضافه شد بقیه کد اجرا بشه.
حالا چکار کنم.

sinoser
شنبه 30 شهریور 1392, 14:59 عصر
1 - برای تشکر دکمه تشکر گذاشتن
2- به نظرم تعریف به شکل تابعش مسخرس مگر این که بخوای این کدرو بعد از رویدادی اجرا کنی

اینم چیزی که گفتی میشه

$(document).ready(function(e) {

var brandlist = new Array("Porsche","Volkswagen","Audi","BMW");
var timeOut = null;
var counter = 0;
var bb
function newClient(){
var preference = Math.floor((Math.random()*4));
var time = Math.floor((Math.random()*1000)+1);
var client = Math.floor((Math.random()*10)+1);
$("#clients_queue").append('<div class="client client_'+client+'"><span class="preference">Client for '+brandlist[preference]+'</span></div>');
bb=counter++;
if(bb < 10){
timeOut = setTimeout(newClient,1000);
}else{
window.clearInterval(timeOut);
$('#clients_queue div').draggable({
drag:function(even,info){
bb--;
} })
}

}

newClient();
});