PDA

View Full Version : محو کردن یک div با تاخیر زمانی



minaalamshahi
چهارشنبه 27 مهر 1390, 15:49 عصر
با سلام چطور می تونم یه div رو متن داخل اون رو با set time out خر دو ثانیه عوض می کنم موقع عوض کردن متن داخلش opacity اون رو هم کم بعد زیاد کنم
از کد زیر استفاده کردم اما بهم جواب نمیده


var value = 0
var plus = 1
var minus = 0
function faderais() {
if (value < 2000 && plus) {
value += 5;
document.getElementById("divcontent").filters[0].opacity = value
faderais();
}
else {
plus = 0
minus = 1
setTimeout("fadedecrease()", 1000);
}

}
function fadedecrease() {
if (value > 30 && minus) {
value -= 5
fadedecrease();
}
else {
plus = 1
minus = 0
setTimeout("Settextdiv()",1000);
}
}
var intIndex = 0;
var txtmessage;
function Settextdiv() {
var arrtext = arraymessage.split('~');

intIndex++;
if (intIndex >= arrtext.length) {
intIndex = 0;
}
txtmessage = arrtext[intIndex];
document.getElementById("divcontent").innerHTML = txtmessage;
setTimeout("faderais()", 2000);


}

AMIBCT
چهارشنبه 27 مهر 1390, 16:20 عصر
این کدی است که همین دیروز برای کاری نوشتم

بخش‌هایی رو بر اساس نیاز باید تغییر بدید
الگوریتمش هم ساده است و اگه بخونید متوجه می‌شید:
function on_menu_show( el, o ) {
var objDiv = document.getElementById( el );

if( objDiv.style.display != 'block' )
objDiv.style.display = 'block';

objDiv.style.opacity = o / 100;
objDiv.style.filter = 'alpha(opacity=' + o.toString() + ')';

if( o < 100 ) {
setTimeout( function () {
on_menu_show( el, Math.ceil( ( 100 + o ) / 2 ) );
}, 40 );
} else {
return;
}

}

function on_menu_hide( el, o ) {
var objDiv = document.getElementById( el );

objDiv.style.opacity = o / 100;
objDiv.style.filter = 'alpha(opacity=' + o.toString() + ')';

if( o > 0 ) {
setTimeout( function () {
on_menu_hide( el, Math.floor( o / 1.2 ) );
}, 40 );
} else {
objDiv.style.display = 'none';
}
}

برای نمایش یک شیء( div )
شناسه‌ی اون رو به همراه مقدار اولیه‌ی شفافیت به تابع show بفرستید

برای مخفی کردن هم از تابع hide استفاده کنید

minaalamshahi
پنج شنبه 28 مهر 1390, 10:54 صبح
من از این کد استفاده کردم
اما احتیاج دارم متنم مدت بیشتری نمایش داده بشه
برای همین کد رو به صورت زیر نوشتم


function on_menu_show(el, o) {
var objDiv = document.getElementById(el);
if (objDiv.style.display != 'block')
objDiv.style.display = 'block';
objDiv.style.opacity = o / 100;
objDiv.style.filter = 'alpha(opacity=' + o.toString() + ')';
if (o < 100) {
setTimeout(function () {
on_menu_show(el, Math.ceil((100 + o) / 2));
}, 40);
} else {
return;
}
}
function on_menu_hide(el, o) {
var objDiv = document.getElementById(el);
objDiv.style.opacity = o / 100;
objDiv.style.filter = 'alpha(opacity=' + o.toString() + ')';
if (o > 0) {
setTimeout(function () {
on_menu_hide(el, Math.floor(o / 1.2));
}, 40);
} else {
objDiv.style.display = 'none';
}
}
var intIndex = 0;
function Settextdiv() {
var arrtext = arraymessage.split('~');
var txtmessage;
intIndex++;
if (intIndex >= arrtext.length) {
intIndex = 0;
}
txtmessage = arrtext[intIndex];
on_menu_show('divcontent', 30);
document.getElementById('divcontent').innerText = txtmessage;
setTimeout("Settextdiv()", 5000);
on_menu_hide('divcontent', 1000);
}

اما نمیدونم چرا هر جا رو که جابجا می کنم مدت عدم نمایش متن زیاد میشه نه مدت نمایش متن
و زمان محو شدن و نمایش رو هم که تغییر میدم مثلا به 100
نحوه نمایش به هم میریزه
این زمان 40 رو از رو چه قانونی گذاشتین؟
که اگر خواستم بتونم تغییرش بدم

minaalamshahi
پنج شنبه 28 مهر 1390, 11:34 صبح
مگه Set time out برای تنظیم زمان اختصاص داده شده برای اجرا یک تابع نیست؟
پس وقتی که بهش بگی که تابع showwmessage رو برای مدت 5000 ثانیه اجرا کن پیام باید مدت 5 ثانیه نشون داده بشه


function showmessage()
{
document.getElementById('divcontent').innerText = txtmessage;

}
function Settextdiv() {
var arrtext = arraymessage.split('~');

intIndex++;
if (intIndex >= arrtext.length) {
intIndex = 0;
}
txtmessage = arrtext[intIndex];
on_menu_show('divcontent', 0);
setTimeout("showmessage()", 5000);
on_menu_hide('divcontent', 2000);
setTimeout("Settextdiv()", 1000);
}

اما اینکارو نمیکنه