javascript - 如何使用 JS 定期更改 div 的宽度?

标签 javascript jquery html css

我在背景中有一个温度刻度(在某种程度上是绿色,然后是黄色,然后是红色),并且需要一个温度“条”在它上面:

  1. 在固定的时间间隔后刷新,就像它定期“更新”自己一样
  2. 根据它读取的参数动态改变它的宽度。现在我只是想用一个随机数生成器(在一个范围内)来做到这一点

我做了类似的事情,在这里创建了一个 div

<div id="temperatureBar" style="background-color: black; height: 20px;"></div>

并使用了一些 jQuery

function refreshTemperature(){
    var width = (Math.random() * (100 - 1)) + 1;
    setInterval(function () {
        $('#temperatureBar').fadeOut('slow');
        $(document).getElementById('temperatureBar').style.width = width+"px";
        $('#temperatureBar').fadeIn('slow');
        refreshTemperature();
    }, 5000);
}

但这行不通。谁能帮我找到可行的解决方案?

最佳答案

你应该使用 jquery 的 $.css 方法。

您可能没有注意到的另一件事是 setInterval 在您的代码中 5 秒调用一次,并且每次调用都会启动另一个 setInterval .
这意味着几分钟后,您将有大量 事件等待调用,这将导致各种问题。请改用 setTimeout

这是一个工作示例:

function refreshTemperature() {
  setTimeout(function() {
    var elem = $('#temperatureBar')
    var width = (Math.random() * (100 - 1)) + 1;
    elem.fadeOut('slow');
    elem.css('width', width + "px");
    elem.fadeIn('slow');
    refreshTemperature();
  }, 5000);
}

refreshTemperature()
#temperatureBar {
  background-color: tomato;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="temperatureBar">
  My size changes
</div>

关于javascript - 如何使用 JS 定期更改 div 的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50603856/

相关文章:

子元素上的 JavaScript 事件处理程序

javascript - Google Apps 脚本在 Google 表格中进行多个查找和替换正则表达式

javascript - 从函数中排除负数以获取和设置边距

jquery - 选项的单击事件在 IE 中不起作用

javascript - 音频结束,重新排列变量并播放另一个音频

javascript - Testcafe 查找元素

javascript - 以编程方式从变量设置 AngularJS 过滤器(例如日期或货币)

javascript - 使用 document.write() 将 html 写入 iframe,但 jquery 在 IE9 中不起作用

html - 为什么我的菜单没有使用此 CSS 下拉?

css - 返回 Wordpress 的顶部按钮