javascript - 纯 javascript - 创建我自己的淡出功能

标签 javascript

我正在尝试创建一个与 jquery .fadeOut() 类似的函数在纯 JavaScript 中有效,但我的代码遇到了问题。错误代码:

span[0].fadeOutEffect is not a function

我的代码:

var span = document.querySelectorAll("span");

function fadeOutEffect() {
  var node = this
  var fadeEffect = setInterval(function() {
    if (!node.style.opacity) {
      node.style.opacity = 1;
    }
    if (node.style.opacity > 0) {
      node.style.opacity -= 0.1;
    } else {
      clearInterval(fadeEffect);
    }
  }, 50);
}

span[0].fadeOutEffect();
<span>one </span><span>two </span><span>three </span>

最佳答案

当我阅读您的代码时,我发现您可能想向 HTMLElement 原型(prototype)添加一个函数 - 不建议这样做,但它看起来像这样:

HTMLElement.prototype.fadeOutEffect = function() {
  var node = this
  var fadeEffect = setInterval(function() {
    if (!node.style.opacity) {
      node.style.opacity = 1;
    }
    if (node.style.opacity > 0) {
      node.style.opacity -= 0.1;
    } else {
      clearInterval(fadeEffect);
    }
  }, 50);
}

var span = document.querySelectorAll("span");


span[0].fadeOutEffect();
<span>one </span><span>two </span><span>three </span>

更简洁的方法是传递跨度:

var fadeOutEffect = function(node) {
  var fadeEffect = setInterval(function() {
    if (!node.style.opacity) {
      node.style.opacity = 1;
    }
    if (node.style.opacity > 0) {
      node.style.opacity -= 0.1;
    } else {
      clearInterval(fadeEffect);
    }
  }, 50);
}

var span = document.querySelectorAll("span");


fadeOutEffect(span[0]);
<span>one </span><span>two </span><span>three </span>

关于javascript - 纯 javascript - 创建我自己的淡出功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444819/

相关文章:

javascript - 将选项卡关闭到左侧,同时排除固定选项卡

javascript - TinyMCE 工具栏选择框

javascript - window.location.reload 不适用于 Firefox 和 Chrome

javascript - 简单的 javascript search() 函数不起作用

javascript - 自动版本化外部链接内容

javascript - 从 node.js 缓冲区中读取精度损失的 int64

javascript - 如何在服务器上设置 "no value"以兼容Backbone?

javascript - 如何将模型从 View 传递到 Controller ,将项目添加到列表,传回 View

javascript - 如何使用嵌套组件对组件进行快照测试?

javascript - chrome 中如果 URL 包含 '#' 则被 chop