gpt4 book ai didi

javascript - 在javascript中重复使用的另一个函数中执行一个函数的最佳方法

转载 作者:行者123 更新时间:2023-11-28 00:31:22 25 4
gpt4 key购买 nike

我正在为 ESP8266 上的应用程序创建一个 Web 界面,我在其中通过 AJAX 和 Javascript 将某些数据发送到界面。数据每秒发送一次。由于这在首次加载页面时需要一些时间,因此我希望仅在信息到达后才显示它。现在我得到了以下有效的解决方案:

<body onload="doAjax()">
<div id="interface-content" style="display: none">
Some content
</div>
</body>

<script>
function doAjax(action = "getCont", callback = continousStuff) {

var ajaxRequest = null;
if (window.XMLHttpRequest) { ajaxRequest = new XMLHttpRequest(); }
else { ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); }

if (!ajaxRequest) { alert("AJAX is not supported."); return; }

ajaxRequest.open("GET", action, true);

ajaxRequest.onreadystatechange = function () {
if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {


callback(ajaxRequest.responseText);
//Here I make the content visible:
document.getElementById("interface-content").style.display = "block";
}
}
ajaxRequest.send();
}
var a = setInterval('doAjax("getCont", continousStuff)', 1000);
</script>

现在 display="block" 也每秒执行一次。我想知道,是否有更好的方法让这一行在收到数据后只执行一次?

最佳答案

您可以检查您的 div 的显示属性是否为“ block ”,如果不是,则将其更改为 block 。这样,它只会更改一次。

let element =  document.getElementById("interface-content");
if(element.style.display !== "block") {
element.style.display = "block";
}

关于javascript - 在javascript中重复使用的另一个函数中执行一个函数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58843499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com