大佬教程收集整理的这篇文章主要介绍了奇怪的 Javascript 行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我很难理解为什么 2 个看似 JavaScript 块是 行为出乎意料:
const fadeOutEffect = provIDer => {
let fadeTarget = document.getElementByID(provIDer);
let fadeEffect = seTinterval(function() {
if (!fadeTarget.style.opacity) {
fadeTarget.style.opacity = 1;
}
if (fadeTarget.style.opacity > 0) {
fadeTarget.style.opacity -= 0.05;
console.log(fadeTarget.style.opacity); // prints out decremented value
} else {
clearInterval(fadeEffect);
}
},100);
};
const fadeInEffect = provIDer => {
let fadeTarget = document.getElementByID(provIDer);
let fadeEffect = seTinterval(function() {
if (fadeTarget.style.opacity < 1) {
fadeTarget.style.opacity += 0.05;
console.log(fadeTarget.style.opacity); // prints out same value
} else {
clearInterval(fadeEffect);
}
},100);
};
在一个函数中,我增加了 HTML 元素的不透明度,而在另一个函数中,我减少了它。然而,第一个函数做了我期望它做的事情,它会减少值,第二个虽然不会增加。保持不变。
我在这里遗漏了什么?
CSS 属性是字符串 -
function fadeOut (elem,ms)
{ const x = elem.style.opacity == ""
? 1
: number(elem.style.opacity)
if (x == 0) return
elem.style.opacity = String(x - 0.05)
setTimeout(fadeOut,ms,elem,ms)
}
const box1 =
document.querySELEctor("#box1")
const box2 =
document.querySELEctor("#box2")
fadeOut(box1,50)
fadeOut(box2,100)
div { width: 100px; height: 100px; opacity: 1; }
.blue { BACkground-color: blue; }
.red { BACkground-color: red; }
<div id="box1" class="blue"></div>
<div id="box2" class="red"></div>
也许更好的写法是使用默认参数 -
function fadeOut (elem,opacity = 1)
{ if (opacity == 0) return
elem.style.opacity = String(opacity)
setTimeout(fadeOut,opacity - 0.05)
}
const box1 =
document.querySELEctor("#box1")
const box2 =
document.querySELEctor("#box2")
fadeOut(box1,100)
div { width: 100px; height: 100px; opacity: 1; }
.blue { BACkground-color: blue; }
.red { BACkground-color: red; }
<div id="box1" class="blue"></div>
<div id="box2" class="red"></div>
以上是大佬教程为你收集整理的奇怪的 Javascript 行为全部内容,希望文章能够帮你解决奇怪的 Javascript 行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。