0

私は現在、コードイグナイターのサイトに取り組んでいます。私のデータベースには、プロジェクトといくつかの 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 に答える