javascript - 控制台不工作并且功能开始工作较晚

标签 javascript html css console

这就像 javascript 不尊重 css 中的样式定义,只尊重 javascript 本身在 css 中所做的更改:

<body onload="fader()">

    <img id="ssio" src="../images/slideshow/1.jpg" alt="slideshow" style="width:100%;height:80%;" />
    <img id="ssie" src="../images/slideshow/2.jpg" alt="slideshow" style="width:100%;height:80%;" />

<!--css work-->

<style>

img#ssio{
    transition:opacity 1s;
    position:absolute;
    opacity:1;
    margin:0;
    padding:0;
}
img#ssie{
    transition:opacity 1s;
    opacity:0;
    margin:0;
    padding:0;
}

</style>

<!--js work-->

<script>

function fader() {
    console.log(document.getElementById("ssio").style.opacity, document.getElementById("ssie").style.opacity, ",", ssion, ssien)
    document.getElementById("ssio").style.opacity = document.getElementById("ssie").style.opacity;
    document.getElementById("ssie").style.opacity = 1 - document.getElementById("ssio").style.opacity;
    setTimeout(fader, 4000);
}

</script>
</body>

为什么它没有按预期工作? 为什么控制台和js将css中定义的不透明度视为null? 我该如何修复它?

最佳答案

您的函数存在一些问题:

首先,您忘记定义什么是变量 ssion 和 ssien,这就是控制台中没有写入日志的原因。

第二个问题是 JavaScript 不查看样式表中的属性(但是它查看内联样式中的属性)。因此,由于最初加载文档时,您还没有在内联样式中定义不透明度,因此 document.getElementById("ssie").style.opacity 没有值,这意味着第一次运行后在您的函数中,您最终会将 ssie 的不透明度设置为 1。

您可以阅读主题How do I get the opacity of an element using Javascript?的答案有关如何解决此问题的更多信息。

但是,在我看来,正确的方法实际上是使用 displayvisibility CSS 属性。您可能想查找它们。

关于javascript - 控制台不工作并且功能开始工作较晚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243676/

相关文章:

javascript - RxJS的subscribe函数内部 'this'的值是多少

javascript - 在 AngularJS 中手动加载和卸载外部 javascript

javascript - 在按钮单击时切换动画 Div

javascript - 有选择地调用 ajaxStart 和 ajaxStop

jquery - 在验证失败的 jquerymobile 上更改阴影颜色

HTML 内联元素和垂直/水平边距

Javascript提示框字段大小限制

javascript - 带有下拉列表的搜索栏

javascript - 使用javascript移动菜单栏

html - 如何将两个内容框放在同一行上?