2017-05-09 104 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欢迎 –

相关问题