javascript 淡入淡出不起作用

标签 javascript

有谁知道为什么我的 javascript 不能正常工作?下面是代码:

function load(){
    function fadein(){
        var op = document.getElementsByClassName("load_1")[0]
        op.style.opacity = 0;
        function animate(){
            if ((op.style.opacity = op.style.opacity + 0.01) < 1){
                alert("Hello")
                requestAnimationFrame(animate);
            }
        }
        animate()
    }
    fadein()
}

load()

最佳答案

我知道你说过你希望它完全按照原来的方式工作,所以如果我的建议有点过分,我深表歉意,但由于以下原因,我无法让它按照你的方式工作:

  1. 在我看来,嵌套函数至少在 JavaScript 中不是一个好的做法,因为它很多时候会导致函数无法工作,就像你的情况一样。话虽如此,您可以单独定义它们并在加载函数中调用它们。
  2. 如果在外部声明 var 操作的定义,那么它是一个共享变量,效果会更好。否则我建议将其作为函数之间的参数传递。实际上取决于您稍后的目标,但目前我注意到它有时会阻止其他功能看到它
  3. 最后,但可能也是最重要的一点是,op.style.opacity 不是一个数字。你可以直接向它传递一个数字,但向其中添加数字是行不通的,因为它会被解析为字符串并成为 CSS。

在下面找到建议代码。它有多项更改,但希望不会像您希望的那样太多。

 var op = document.getElementsByClassName("load_1")[0];
 load();
 function load(){
     fadein();
     animate();
 }
 function animate(){
      var opac = parseFloat(op.style.opacity);
      opac = opac+0.1;
      op.style.opacity = opac;
      if ((op.style.opacity) < 1){
           alert("Hello");
           requestAnimationFrame(animate);
      }
}
function fadein(){
     op.style.opacity = 0.1;
}

关于javascript 淡入淡出不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897807/

相关文章:

javascript - 在 contentEditable 中触发 ENTER 事件

javascript - 如何在 React.Js 中使用背景图像 css?

javascript - 嵌套 JSON 和 JQuery $.each()

javascript - jquery setfocus() 新插入的元素

javascript - WebGL:如何有效地获取/缓存着色器?

javascript - 用javascript写这个的最短方法?

javascript - knockout 映射确实代表了 html 的愿望

javascript - jQuery - 将类添加到不同数量的 div

javascript - 当为输入分配值时如何显示/隐藏 div

javascript - 自定义 AJAX 用户控制 JavaScript 构造函数 "element"未定义