gpt4 book ai didi

javascript - javascript settimeout 有什么问题

转载 作者:行者123 更新时间:2023-11-28 12:35:47 26 4
gpt4 key购买 nike

在寻找隐藏notificationBar的解决方案后,没有按钮oncomplete XX.hide()

我找到了一个 JavaScript

<script type="text/javascript">
jQuery(function() {
bar.show();
setTimeout("bar.hide()",5000);
});
</script>

当我将此代码放在 </p:notificationBar> 之后时,它可以完美地工作。

但我的问题是我想在执行我的方法后显示通知,并在 5 秒后隐藏此组件。但我不知道我在oncomplete上调用这个javascrpit所以我复制了两行,这是我的代码

<p:commandButton value="Run" action="#{optionBean.updateParametre()}" oncomplete="bar.show(),setTimeout(bar.hide(),50000);" update="panel"/>
<p:notificationBar position="bottom" effect="fade" widgetVar="bar" >
<f:facet name="close">
<p:graphicImage value="/resources/image/closebar.png" />
</f:facet>
<h:outputText value="Parametre Enregistre !" style="color:#FFCC00;font-size:36px;" />
</p:notificationBar>

问题是notifationBar无论固定时间都会很快消失!!!为什么

最佳答案

调用 setTimeout 的方式有一个细微的差别,这导致了所有的不同。

比较

  • setTimeout("bar.hide()",5000);
  • setTimeout(bar.hide(),50000)

除了数量级差异之外,bar.hide() 在顶部被引用,而没有在底部被引用。当你 pass string literals to setTimeout ,当超时发生时,它们将被评估

在第二个实例中,bar.hide() 未加引号。发生的情况是,在创建超时时立即调用 bar.hide(),并且在发生超时时调用 hide 函数的返回值。

解决此问题的最简单方法是将 oncomplete 属性修改为

oncomplete="bar.show(),setTimeout('bar.hide()',50000);"

有更好的方法。 jQuery 可以使用 delay 来链接这样的效果,但其他人已经给出了答案,所以我不再重复。

关于javascript - javascript settimeout 有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17112762/

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