这个简短的Javascript有什么问题?

这个简短的Javascript有什么问题?,javascript,css,function,stylesheet,opacity,Javascript,Css,Function,Stylesheet,Opacity,我一直在看这个JS,我试图找出为什么它没有任何效果。 它应该以指定的时间间隔运行函数,直到某个元素的不透明度为0,它应该继续降低该元素的不透明度 启动此间隔函数时,屏幕上不会发生任何事情。有人有什么想法吗 setInterval(fadeover, 100); function fadeover() { if (document.getElementById("rightopright").style.opacity > 0) { var curropac;

我一直在看这个JS,我试图找出为什么它没有任何效果。 它应该以指定的时间间隔运行函数,直到某个元素的不透明度为0,它应该继续降低该元素的不透明度

启动此间隔函数时,屏幕上不会发生任何事情。有人有什么想法吗

setInterval(fadeover, 100);

function fadeover() {
    if (document.getElementById("rightopright").style.opacity > 0) {
        var curropac;
        curropac = document.getElementById("rightopright").style.opacity;
        document.getElementById("rightopright").style.opacity = (curropac - 0.1);
    }
}
我肯定我在做一些愚蠢的事情,但我不知道。。。
任何帮助都将不胜感激

假定您没有为inline
opacity
属性设置默认值,因此它是一个空字符串(不是大于零的值)

您需要针对这种情况进行测试:

function fadeover() {
    var el = document.getElementById("rightopright");
    var op = el.style.opacity;
    if (op === "") { 
        op = 1;
    }
    if (op > 0) {
        el.style.opacity = (op - 0.1);
    }
}

…或者忘记JavaScript动画,改为使用。

可能您没有为inline
opacity
属性设置默认值,因此它是一个空字符串(不是大于零的值)

您需要针对这种情况进行测试:

function fadeover() {
    var el = document.getElementById("rightopright");
    var op = el.style.opacity;
    if (op === "") { 
        op = 1;
    }
    if (op > 0) {
        el.style.opacity = (op - 0.1);
    }
}

…或者忘记JavaScript动画,改为使用。

除非在元素本身上有
style=“opacity:1”
,否则元素.style.opacity将是空字符串。空字符串不大于零,因此函数永远不会运行

我可否提出以下建议:

function fadeOut(elem,time) {
    var opac = 1;
    setTimeout(function() {
        opac -= 0.1;
        elem.style.opacity = opac;
        if( opac > 0) setTimeout(arguments.callee,time/10);
    },time/10);
}
fadeOut(document.getElementById('rightopright'),1000);

除非元素本身有
style=“opacity:1”
,否则
element.style.opacity
将是空字符串。空字符串不大于零,因此函数永远不会运行

我可否提出以下建议:

function fadeOut(elem,time) {
    var opac = 1;
    setTimeout(function() {
        opac -= 0.1;
        elem.style.opacity = opac;
        if( opac > 0) setTimeout(arguments.callee,time/10);
    },time/10);
}
fadeOut(document.getElementById('rightopright'),1000);

试试curropac-parseFloat(0.1)我想说这是太多的代码,只是为了淡出一些东西。@techfoobar你有什么建议?@Kolink-我建议jquery淡出,假设应用程序中有更多jquery可以大量投入的东西。@Kolink-至少,我建议缓存
\rightopright
元素。。我在你的回答中看到了这一点,curropac-parseFloat(0.1)我想说这是太多的代码,只是为了淡出一些东西。@techfoobar你有什么建议?@Kolink-我建议jquery淡出,假设在应用程序中有更多的东西jquery可以大量投入。@Kolink-至少,我建议缓存
#rightopright
元素。。我在你的回答中看到了这一点也许你应该先把
op
转换成数字,然后再减去<代码>el.style.opacity=(+op-0.1),如果已指定不透明度,则减法运算符将自动执行。明确地这样做不会增加任何有用的东西。哇,多么美妙的回答啊!感谢所有作出回应的人。我假设不透明度取一个基本整数值1,如果它没有被设置并被渲染到屏幕上-我错了。再一次,来自这个社区的精彩回应。谢谢你的帮助。也许你应该先把
op
转换成数字,然后再减去<代码>el.style.opacity=(+op-0.1),如果已指定不透明度,则减法运算符将自动执行。明确地这样做不会增加任何有用的东西。哇,多么美妙的回答啊!感谢所有作出回应的人。我假设不透明度取一个基本整数值1,如果它没有被设置并被渲染到屏幕上-我错了。再一次,来自这个社区的精彩回应。谢谢你的帮助。谢谢你的洞察力,它也帮助我理解了上面的答案:)谢谢你的洞察力,它也帮助我理解了上面的答案:)