2017-05-09 101 views
0

我有這個網站:jQuery腳本停止工作時,另一個腳本重新加載頁面

<td> 
    <div class="status">1</div> 
    <span class="fa fa-times-circle" aria-hidden="true"></span> 
</td> 

我有這樣的腳本:

<script> 
    $('.status:contains("1") + span').removeClass('fa-times-circle').addClass('fa-sun-o'); 
</script> 

劇本基本上消除並根據div的文本添加類1或0.但是,該腳本只能工作10秒,然後恢復爲顯示fa-times-circle的默認類。當另一個腳本(見下文)每隔10秒重新載入一次數據時停止。

<script> 
    (function updateStafftable() { 
    $.get('sql/staff-status.php', function(data) { 
     $('.table-staffs').html(data); 
     setTimeout(updateStafftable, 10000); 
    }); 
    })(); 
</script> 

你們知道爲什麼嗎?另外,我想指出的一個重要細節是,我在開始時提到的html是在每10秒間隔重新加載的'staff-status.php'中。我只是不明白爲什麼會發生這種情況。

+1

取決於'table-staffs'類。基本上,從我能收集到的信息來看,你就像一個畫藍色牆的畫家。但是,每隔10秒鐘,另一位畫家就會過來,無論以前是什麼,都會將牆壁塗成白色。然後,你問爲什麼牆壁是白色的10秒後讓我覺得你需要先制定出你的邏輯。 –

+1

可能會增加一些關於「table-staffs」表的問題。如果這是

1
的父代,那麼它將替換它...並因此恢復您的更改 – Todilo

+0

JavaScript與html結合使用很有趣。將腳本包含在正在重新加載的頁面中時解決了問題。 – MasterJoe

回答

1

你的方式是不好的,但如果你想acheive最小的變化你的目標,然後把這個腳本在Ajax調用

<script> 
    (function updateStafftable() { 
    $.get('sql/staff-status.php', function(data) { 
     $('.table-staffs').html(data); 
     $('.status:contains("1") + span').removeClass('fa-times-circle').addClass('fa-sun-o'); 
     setTimeout(updateStafftable, 10000); 
    }); 
    })(); 
</script> 

更好的辦法

編輯邏輯的成功staff-status.php通過將if條件分配給基於狀態的類,如

...  
    if($status == 1){ 
    $class= 'fa-sun-o'; 
    }else{ 
    $class= 'fa-times-circle'; 
    } 
    .... 
    <td> 
     <div class="status">$status</div> 
     <span class="fa $class" aria-hidden="true"></span> 
    </td> 
    .... 
+0

太棒了!謝謝Nirmal。 – MasterJoe

+0

@MasterJoe歡迎 –

相關問題