fazel-d
پنج شنبه 07 مرداد 1389, 17:41 عصر
من یک دکمه دارم که ارتفاع div رو برابر با 200 می کنه و دکمه hide من با استفاده از setInterval میاد و تابع hide من رو با زمان 20 میلی فراخوانی می کنه.تا زمانی که ارتفاع div برابر با صفر بشه.
مشکلی که وجود داره اینه که برای اولین با خوب عمل می کنه ولی زمانی که دوباره دکمه show رو که می زنم، بدون اینکه دکمه hide رو بزنم به خودی خود div بسته می شه.
احساس می کنم که متد setInterval به صورت پشته کار می کنه و در حافظه باقی می مونه
کد Show:
function show(id) {
var div;
if (id == null) {
div = 'popup'
}
else div = document.getElementById(id);
div.setAttribute('style', 'height:350px');
}
کد Hide:
function hide(divId) {
if (divId == null) {
divId = 'popup';
}
var div = document.getElementById(divId); //.firstChild.nodeValue;
var h = div.style.height;
if (h != null) {
h = h.split("px")[0]; // split number of height
}
var x ;
if (h > 0) {
h -= 1;
div.style.height = h + 'px';
x = setInterval('hide()', 30);
}
else {
clearInterval(x);
}
}
مشکلی که وجود داره اینه که برای اولین با خوب عمل می کنه ولی زمانی که دوباره دکمه show رو که می زنم، بدون اینکه دکمه hide رو بزنم به خودی خود div بسته می شه.
احساس می کنم که متد setInterval به صورت پشته کار می کنه و در حافظه باقی می مونه
کد Show:
function show(id) {
var div;
if (id == null) {
div = 'popup'
}
else div = document.getElementById(id);
div.setAttribute('style', 'height:350px');
}
کد Hide:
function hide(divId) {
if (divId == null) {
divId = 'popup';
}
var div = document.getElementById(divId); //.firstChild.nodeValue;
var h = div.style.height;
if (h != null) {
h = h.split("px")[0]; // split number of height
}
var x ;
if (h > 0) {
h -= 1;
div.style.height = h + 'px';
x = setInterval('hide()', 30);
}
else {
clearInterval(x);
}
}