0

我现在正在开发一个 codeigniter 网站。在我的数据库中,我有一个项目和一些 project_logs。

我想检查每个项目有多少日志并将其显示在每个项目的跨度中。但是如何将每个项目的 ID 传递给 javascript?

我尝试在我的脚本中这样做:

setInterval(
    function (){
    var ID = $(".trial").attr("data-id");
    var el = $('span#trial-' + ID);
    $(el).load("<? echo base_url()?>/projects_logs/checkMessage/" + ID);
}, 1000);

我的观点:

<ul class="dropdown-slider">
<? foreach($roster->latest->result_object() as $project) { ?>
     <li class="trial" data-id="<?=$project->id?>">
           <a href="<? echo base_url();?>projects/<?=$project->id?>">
               <?=$project->title?><span id="trial-<?=$project->id?>" data-id="<?=$project->id?>"></span>
           </a>
      </li>
<? } ?> 
</ul>

在我的控制器上,它将返回项目的 ID 以检查脚本是否有效,但稍后它将执行一个查询,计算项目有多少日志。现在什么也没发生。

我不熟悉javascript,只能通过google学习。

4

1 回答 1

0

你的 JavaScript 中有太多的函数:

setInterval(
    function (){function checkMessage(){
      // ...
}, 1000);

上面的大括号结束了您从未调用过的“checkMessage()”。只需从上面删除“function checkMessage(){”,你就应该计算出一些东西:

setInterval(
    function (){
      // ...
}, 1000);

请注意,您的 JavaScript 代码对列表中的第一个元素进行操作,而不是对所有元素进行操作。使用 jQuery,您将使用 .each() 对列表中的所有元素进行操作。

将来,调试这些的一个好方法是:

  1. 查看 JavaScript 错误控制台,看看是否有任何明显的错误。
  2. 检查 DOM 以确保它看起来像您期望的那样。
  3. 使用 console.log() 确保您的 JavaScript 被实际调用。
  4. 使用 console.log() 查看中间计算是什么。
于 2013-05-09T10:19:20.447 回答