javascript - 普通JS : delay click event to add animation

标签 javascript animation

请不要使用 jQuery!

我不想为此使用 jQuery,因为它是一个很大的库,我只需要做这一件事:

我想为点击事件添加短暂的延迟,以便我可以使用 CSS 淡出页面上的元素。

我可以发布到目前为止我尝试过的所有代码,但你会觉得无聊。所以这是我认为最接近的一个:

document.getElementsByTagName('a').onclick = function (e) {

// Delay setting the location for one second
setTimeout(function() {this.href}, 90000);

var animOut = document.getElementByClassName('animateOut');
   animOut.className += 'out';
};

我已经排除了使用onbeforeunload,因此劫持点击事件似乎是最好的方法。

再一次,我知道这在 jQuery 中是轻而易举的事,但如果可能的话我想避免它。

非常感谢您的回答。

<小时/>

更新

感谢评论者 guest271314 和 The Alpha,我已经决定采用这种方法,但仍未完成拼图。

window.onload = function(){

var links = document.getElementsByTagName('a');
for( var i=0,il = links.length; i< il; i ++ ){
 links[i].onclick = clickHandler;
}

function clickHandler(event) {

event.preventDefault();

// Delay setting the location for one second
setTimeout(function() {

  location.href = this.href;
}, 90000);

// add `s` to `Element`
var animOut = document.getElementsByClassName("animateOut");

// iterate `animOut` elements
for (var i = 0; i < animOut.length; i++) {
   // add `out` `className` to `animOut` element at index `i`
   animOut[i].classList.add("out");
};
};
};

必须迭代 a 标签是我从阅读其他帖子中学到的一个补充(我将在一分钟内链接到它们)。

不幸的是,setTimeout 函数似乎不起作用。我需要完善这个函数中的内容,但不知道以什么方式。

非常欢迎您提供进一步的帮助。

谢谢

最佳答案

我不能真正为此归功于自己,下面的 2 位用户(guest271314 和 The Alpha)应该得到很多认可,因为他们帮助我实现了目标。完整的代码(经过一些改进)是:

window.onload = function(){

var links = document.getElementsByTagName('a');

for( var i=0,il = links.length; i< il; i ++ ){
links[i].onclick = clickHandler;
}

function clickHandler(event) {

event.preventDefault();

var travelTo = this.getAttribute("href");

// add `s` to `Element`
var animOut = document.getElementsByClassName("animateOut");

// iterate `animOut` elements
for (var i = 0; i < animOut.length; i++) {
   // add `out` `className` to `animOut` element at index `i`
   animOut[i].classList.add("out");
};

// Delay page out until the animation finishes
setTimeout(function() {
  window.location.href = travelTo;
}, 1000);
};
};

关于javascript - 普通JS : delay click event to add animation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125391/

相关文章:

javascript - PHP saveHTML 函数没有正确保存 HTML

javascript - 使用 Datatables jQuery 插件提高更新 DOM 的性能

javascript - 检查是否有任何对象为特定字段指定了值

wpf - 从代码隐藏更改不透明度

c++ - 在 cocos2d-x 中切换 Sprite 动画

javascript - jQuery 单击下方的特定 div 时,尽管有 140 个限制,但仍保持 textarea 打开

javascript - 为什么 Canvas 会留下幽灵般的光环?

ios - UICollectionView 动画,类似于 Google Play 新闻应用

javascript - 如何通过在 svg 中保存开始时间来重新启动动画

javascript - 为什么此动画在 IE 11 和 Edge 中有效,但在 Chrome 中无效?