【问题标题】:Fade In/Out and create/hide <DIV> with javascript使用 javascript 淡入/淡出和创建/隐藏 <DIV>
【发布时间】:2009-02-16 11:36:19
【问题描述】:

我正在运行时创建一些。为此,我正在使用此功能:

function creatediv(id, html, left, top) {

if (document.getElementById(id)) 
    {
        document.getElementById(id).style.display='block';
        fadeIn(id, 300);
    }
    else
    {
        var newdiv = document.createElement('div');
        newdiv.setAttribute('id', id);
        newdiv.setAttribute("class", "warningDiv"); 
        newdiv.style.position = "absolute";
        newdiv.innerHTML = html  + '<h1>(click to close)</h1>';
        newdiv.style.left = left;
        newdiv.style.top = top;
        newdiv.onclick=function(e) {
            fadeOutAndHide(id, 300);
        };  
        document.body.appendChild(newdiv);
        fadeIn(id, 300);
    }

} 

这个功能不适用于IE,我也不知道为什么。我没有收到这个 javascript 的错误警告。 这些是淡入功能:

function fadeOutAndHide (id,millisec)
{
    var object = document.getElementById(id).style;
    var opacStart = 100;
    var opacEnd=0;
    var speed = Math.round(millisec / 100);
    var timer = 0;

    for(i = opacStart; i >= opacEnd; i--) {
        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
        timer++;
    } 

    var elemento = document.getElementById(id);
    if (opacEnd==0){
    elemento.style.display='none';
    }
}


function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;

    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
} 

我遇到的另一个问题:淡出功能无法正常工作。 div 消失,但是当 div 隐藏时触发事件“click”。这是淡出的功能:

function fadeOutAndHide (id,millisec)
{
    var object = document.getElementById(id).style;
    var opacStart = 100;
    var opacEnd=0;
    var speed = Math.round(millisec / 100);
    var timer = 0;

    for(i = opacStart; i >= opacEnd; i--) {
        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
        timer++;

    } 

    var elemento = document.getElementById(id);
    if (i==1){
    elemento.style.display='none';
    }
}

那么,我该怎么做才能解决这个问题?

谢谢

【问题讨论】:

  • 请贴出changeOpac函数代码

标签: javascript dom internet-explorer-8 fadeout


【解决方案1】:

抱歉,我不知道您的代码有什么问题,但我强烈建议您使用现有的 javascript 库(例如 jQuerymootools),它允许您使用一个来实现淡入/淡出等功能一行代码,应该可以在大多数浏览器中使用。

【讨论】:

  • 第二。现在使用 jQuery 之类的库将大大简化此类任务并迅速减少您的开发时间。
  • 非常感谢您的建议,但我的问题不在于 jQuery,而在于这段代码。
  • 我的意思是:不要编写自己的效果,而是使用现有且经过验证的库,例如 jQuery 或 mootools。
  • 我知道,但我想修复我的代码而不是使用 jQuery。希望你能理解我的立场。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 2015-12-15
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多