纯javascript-创建我自己的淡出功能
我试图创建一个类似于纯javascript中jquery纯javascript-创建我自己的淡出功能,javascript,Javascript,我试图创建一个类似于纯javascript中jquery.fadeOut()效果的函数,但是我的代码有问题。错误代码: span[0]。淡出效果不是一个函数 我的代码: var span=document.querySelectorAll(“span”); 函数淡出效果(){ var node=this var fadeEffect=setInterval(函数(){ 如果(!node.style.opacity){ node.style.opacity=1; } 如果(node.style.
.fadeOut()效果的函数,但是我的代码有问题。错误代码:
span[0]。淡出效果不是一个函数
我的代码:
var span=document.querySelectorAll(“span”);
函数淡出效果(){
var node=this
var fadeEffect=setInterval(函数(){
如果(!node.style.opacity){
node.style.opacity=1;
}
如果(node.style.opacity>0){
node.style.opacity-=0.1;
}否则{
清除间隔(fadeEffect);
}
}, 50);
}
span[0]。淡出效果()代码>
一二三
您的代码试图调用DOM元素上不存在的函数。尝试将元素作为参数传递给函数
var span=document.querySelectorAll(“span”);
功能淡出效果(节点){
var fadeEffect=setInterval(函数(){
如果(!node.style.opacity){
node.style.opacity=1;
}
如果(node.style.opacity>0){
node.style.opacity-=0.1;
}否则{
清除间隔(fadeEffect);
}
}, 50);
}
衰减效应(跨度[0])代码>
123span
您正试图将函数作为属性添加到span
元素数组中。您应该将其作为参数传递给您创建的函数。另外,document.queryselectoral(“span”)
返回一个跨度数组,因为HTML文档中可能有多个跨度,所以您可以循环遍历每个跨度并将代码应用于它们
见工作示例:
功能淡出效果(节点){
forEach(函数(节点){//在跨度数组中通过每个节点(每个跨度)循环
var fadeEffect=setInterval(函数(){//运行代码
如果(!node.style.opacity){
node.style.opacity=1;
}
如果(node.style.opacity>0){
node.style.opacity-=0.1;
}否则{
清除间隔(fadeEffect);
}
}, 50);
});
}
var nodes=document.querySelectorAll(“span”);//节点是一个跨度数组
淡出效果(节点);//将跨度数组传递给函数
你好,世界代码>当我阅读您的代码时,我发现您可能希望向HtmleElement原型添加一个函数-不建议这样做,但它看起来是这样的:
HTMLElement.prototype.FadeOutfect=function(){
var node=this
var fadeEffect=setInterval(函数(){
如果(!node.style.opacity){
node.style.opacity=1;
}
如果(node.style.opacity>0){
node.style.opacity-=0.1;
}否则{
清除间隔(fadeEffect);
}
}, 50);
}
var span=document.queryselectoral(“span”);
span[0]。淡出效果()代码>
1233
您创建了一个函数,但它不会神奇地成为每个
元素的属性。为了详细说明Pointy的注释,如果您想淡出span[0]
,您可能会想将该元素作为参数添加,如函数淡出效果(元素){…}
并通过淡出效果(span[0])调用它代码>。