Javascript 利用函数的局部变量和setTimeout
我在建立一个网站时遇到了一个障碍。我有一个函数,它向不同的ID添加一个特定的类。最终的结果是让图像在主页上一次淡出一个。我使用了局部变量a,这样我就可以轻松地编写不同id的代码,而无需编写3个单独的函数。但是,我在使用setTimeout时遇到问题。我似乎根本无法工作。任何帮助都将不胜感激。这些类被添加到ids中没有问题,我只是在使用setTimeout函数时遇到了问题。我用过很多我在这里看到的方法,但我并不真正理解它们。任何帮助都将不胜感激。这是我的密码:Javascript 利用函数的局部变量和setTimeout,javascript,css,image,settimeout,opacity,Javascript,Css,Image,Settimeout,Opacity,我在建立一个网站时遇到了一个障碍。我有一个函数,它向不同的ID添加一个特定的类。最终的结果是让图像在主页上一次淡出一个。我使用了局部变量a,这样我就可以轻松地编写不同id的代码,而无需编写3个单独的函数。但是,我在使用setTimeout时遇到问题。我似乎根本无法工作。任何帮助都将不胜感激。这些类被添加到ids中没有问题,我只是在使用setTimeout函数时遇到了问题。我用过很多我在这里看到的方法,但我并不真正理解它们。任何帮助都将不胜感激。这是我的密码: window.onload; va
window.onload;
var fetchOne=document.getElementById('picOne');
console.log(fetchOne);
var fetchTwo=document.getElementById('picTwo');
var fetchThree=document.getElementById('PictThree');
函数附件类(a){
a、 className='opacity';
}
setTimeout(AttachClass.bind(null,a),8000);
附件类(fetchOne);
AttachClass(两个);
AttachClass(三个)代码>
#微微一号{
不透明度:1;
过渡:不透明度2缓进缓出
}
#picOne.不透明度{
不透明度:0;
}
#皮克托{
不透明度:1;
z指数:-1;
过渡:不透明度2缓进缓出
}
#不透明度{
不透明度:0;
}
#皮克特里{
不透明度:1;
z指数:-2;
过渡:不透明度2缓进缓出
}
#不透明度{
不透明度:0;
}
您只为一个超时的图像设置了一个处理程序,粘贴的代码中从未定义过一个
,因此设置超时
将不起作用
为了使它们单独淡出,您需要为每个要淡出的图像创建一个setTimeout
for (var i = 0; i < images.length; i++) {
setTimeout(AttachClass.bind(null, images[i]), 2000);
}
如果您想进一步完善它,可以在所有图像上粘贴一个类。我选择了类名pic
,在DOM中查询该类名,然后设置上述超时
var images = document.getElementsByClassName('pic');
function AttachClass(a) {
a.classList.add('opacity');
}
for (var i = 0; i < images.length; i++) {
setTimeout(AttachClass.bind(null, images[i]), 1000);
}
var images=document.getElementsByClassName('pic');
函数附件类(a){
a、 添加('opacity');
}
对于(var i=0;i
供你玩玩!
快乐的黑客 给你
var-imgs=document.querySelectorAll('.fade');
无功延迟=500;
对于(变量i=0;i
.fade{
不透明度:.2;
转换:1s全部轻松输入输出;
}
.褪色{
不透明度:1
}
您可能需要这样的东西:
window.onload=function(){
AttachClass();
函数AttachClass(){
setTimeout(函数(){
var a=document.querySelector('.pics img:not(.opacity)');
如果(a){
a、 className=‘不透明度’;
AttachClass();
}
}, 1200);
}
}
.pics img{
宽度:100px;
不透明度:1;
过渡:不透明度1s缓进缓出
}
不透明度{
不透明度:0;
}
谢谢大家的帮助。他们帮我找到了最终的答案。这就是我最终解决问题的原因
window.onload
var fetchOne=document.getElementById('picOne');
console.log(fetchOne);
var fetchTwo=document.getElementById('picTwo');
var fetchThree=document.getElementById('PictThree');
setInterval(函数(){
setTimeout(函数AttachClass1(){fetchOne.className='opacity';},1000);
setTimeout(函数AttachClass2(){fetchTwo.className='opacity';},8000);
setTimeout(函数AttachClass3(){fetchThree.className='opacity';},14000);
setTimeout(函数RemoveClass2(){fetchTwo.classList.remove(“不透明”);},14000)
setTimeout(函数RemoveClass1(){fetchOne.classList.remove(“不透明”);},18000)
setTimeout(函数RemoveClass3(){fetchThree.classList.remove(“不透明”);},18000)
},24000);
将类添加到ID中没有问题
-这不是真的,因为引用错误:a未定义
设置类名
将不起作用。您知道您为AttachClass
函数设置了未定义的参数吗;
var images = document.getElementsByClassName('pic');
function AttachClass(a) {
a.classList.add('opacity');
}
for (var i = 0; i < images.length; i++) {
setTimeout(AttachClass.bind(null, images[i]), 1000);
}