2013-07-16 46 views
0

我有一個jTable,我想每隔X秒刷新一次。之前,我已經正確運行並進行了一些小的編輯,現在它不能正常工作,我無法確定我做了什麼會導致此問題。什麼是阻止我的setInterval函數正確執行?

這裏是我的jTable和啓動/停止功能的代碼:

<script type="text/javascript"> 
      var run=null; 
      $(document).ready(function() { 
       $('#TableContainer').jtable({ 
        title: '', 
        actions: { 
         listAction: 'JSONCreator', 
        }, 
        ajaxSettings: { 
         type: 'POST', 
         dataType: 'json' 
        }, 
        fields: { 
         DeviceId: { 
          key: true, 
          list: false 
         }, 
         DeviceTag: { 
          sorting: false, 
          search: true, 
          title: 'D', 
          width: '40%' 
         }, 
         CH1: { 
          title: 'C1', 
          width: '10%' 
         }, 
         CH2: { 
          title: 'C2', 
          width: '10%' 
         }, 
         Timestamp: { 
          title: 'T', 
          width: '30%', 
          create: false, 
          edit: false 
         } 
        }, 
       }); 
       $('#TableContainer').jtable('load'); 
      }); 
      function startFunction() { 
       document.title = '(Running)'; 
       run = window.setInterval("$('#TableContainer').jtable('reload')", 5000); 
       window.open('M'); 
      } 
      function stopFunction() { 
       document.title = 'W'; 
       window.clearInterval(run); 
       window.open('M'); 
      } 
     </script> 

,然後後,我有我的身體內的兩個按鈕,這樣的定義:

<input type="submit" value="Start" onclick="startFunction()"/> 
<input type="submit" value="Stop" onclick="stopFunction()"/> 

低於這個我有這條線

<div id="TableContainer"/> 

現在它會執行一次,當我按下eit她的按鈕,但之後它不會繼續重新加載表。

window.setInterval("$('#TableContainer').jtable('reload')", 5000); 

是什麼原因造成這種情況?否則我該如何調試這樣的東西?正如我之前所說,這是以前運行正常

回答

1

你是不是取消提交操作。

<input type="submit" value="Start" onclick="startFunction()"/> 
<input type="submit" value="Stop" onclick="stopFunction()"/> 

需要返回false或調用了preventDefault

<input type="submit" value="Start" onclick="startFunction(); return false;"/> 
<input type="submit" value="Stop" onclick="stopFunction(); return false;"/> 

你真的應該使用內聯的事件,您正在使用jQuery的不是,利用它!

$(window).on("click", "input[type=submit]", function(e) { 
    e.preventDefault(); 
    if (this.value==="Start") { 
     startFunction(); 
    } else { 
     stopFunction(); 
    } 
}); 

而且爲你的setTimeout,你真的不應該在傳遞一個字符串,因爲有每次調用時要評估,通過在該要麼命名或匿名函數。

+0

謝謝你,這是非常有益的。 – jeanqueq

0

您的代碼格式不正確。

window.setInterval("$('#TableContainer').jtable('reload')", 5000); 

應該讀

window.setInterval(function(){$('#TableContainer').jtable('reload');},5000) 
+0

第一種方法將起作用。它不好,但它是功能性的。 https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval – BNL

+0

感謝您的快速答案和格式化提示,但這不是我的問題的解決方案。 – jeanqueq

+0

啊,很好。我從來沒有認爲這甚至是可能的。 –

相關問題