【问题标题】:Why onclick doesn't trigger the function to reload page?为什么onclick不会触发重新加载页面的功能?
【发布时间】:2020-04-30 22:58:35
【问题描述】:

我在其中一个视图中有这个,但即使我将函数绑定到它,它似乎也不会在单击按钮后每 10 秒重新加载一次页面。

  %footer.modal__footer
    %ul.modal__list
      %li.modal__list-item
        = submit_tag t('.start'), class: 'btn btn-success', id: 'AnalysisStart', :onClick=> 'refreshPage()'


:javascript
    function refreshPage(){
       window.setTimeout(function(){ document.location.reload(true); }, 10000);
  }

谁能告诉我我做错了什么?或者我还有其他方法可以实现吗?

也可以像这样插入 js 和 ruby​​:

:javascript
-if document.analyses.ready.any?
    window.setTimeout(function(){ document.location.reload(true); }, 10000);

因为这样可以解决我的问题。

【问题讨论】:

    标签: javascript ruby haml


    【解决方案1】:

    您的 HAML 代码似乎没问题。

    如果您希望页面在 X 秒后刷新,您可以简单地使用 JavaScript:

    const refreshAfter = (ms) => {
        setTimeout(()=>{
        document.location.reload(true)
      }, ms)
    }
    
    const onload = () => {
      refreshAfter(10000);
    }
    
    window.onload = onload;
    

    这意味着在页面onload 事件之后,计时器将等待10 秒,然后通过调用refreshAfter 函数刷新页面。然后,页面将刷新,10 秒后将发生新的页面刷新。

    如果你想通过onclick按钮事件触发该函数,直接调用refreshAfter函数即可。

    如果你想在刷新页面之前等待服务器端分析结束,也许你应该使用 JavaScript Ajax 调用来实现这一点,或者 WebSockets。

    【讨论】:

    • 感谢您的回答。当我通过 onclick 按钮事件直接调用该函数时,问题就在那里。它似乎无法正常工作,因为即使尚未单击按钮,页面也会不断重新加载。我尝试了 ajax 调用,但不知何故无法让它工作,因此我正在尝试另一个更直接的解决方案。
    猜你喜欢
    • 2022-01-10
    • 2018-06-05
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多