2016-06-15 1 views
0

私はこれをしばらく見てきましたが、私はそれに対して適切な解決策を見つけることができません。未知の参照エラーとJSの機能

  <li style="float: right;">Themes 
      <ul> 
      <?php 
       $db=mysql_connect('localhost','root',''); 
       if(!$db) { 
        die('Could not connect: '.mysql_error()); 
       } 
       $connection_string=mysql_select_db('somedb',$db); 
       $selectSQL='SELECT * FROM color_patterns';  
       $queryset=mysql_query($selectSQL); 
       $num=mysql_num_rows($queryset); 
       if(0==$num) { 
        echo "No record"; 
        exit; 
       } else { 
        while($row=mysql_fetch_assoc($queryset)) {?> 
        <li onclick="liPosition()"> 
         <?php echo($row['name']);?></li><?php 
        } 
       } 
      ?> 

      </ul> 
     </li> 

これは、ドロップダウンリストが含まれているリスト項目がある:ここでは

は、私のコードの一部です。ドロップダウンリストを作成するために私は自分のデータベースを呼び出し、テーブルの各行に対して、li要素をドロップダウンに追加します。私はクリックしたリのインデックスを取得するJS関数を作ったので、ユーザーがクリックするリに基づいてより多くの情報を取得したい(liインデックスは取得したい別のテーブルのIDに対応する以下からの情報): キャッチされないにReferenceError:

 <script> 

     function liPosition() { 
      var index = $(this).parent().children().index(this); 
      alert("You clicked item " + index); 
     }); 

     </script> 

Iは、Liをクリックすると、私はエラーを取得するliPositionは、私がここにonclickのリスナーを渡すことができないことがわかったいくつかの研究の後に定義されていませんが、私は知りませんそうでなければwhileループでliのインデックスを見つける方法。 whileループで生成されたリスト内のli要素のインデックスを見つける方法はありますか?どんな助けでも大歓迎です、ありがとう。

+1

[mysql_ *関数の使用をやめてください](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [これらの拡張機能](http://php.net/manual/en/migration70.removed-exts-sapis.php)はPHP 7で削除されました。[prepared](http://en.wikipedia.org/ [PDO](http://php.net/manual/en/pdo.prepared-statements.php)および[MySQLi](http://php.net/manual/en/mysqli.quickstart)のwiki/Prepared_statement)ステートメント.prepared-statements.php)、PDOの使用を検討してください。[これは本当に簡単です](http://jayblanchard.net/demystifying_php_pdo.html)。 –

答えて

1

の末尾に余分な)の小さなタイプミスがあり、インラインJavaScriptを削除し、フルjQueryのを行かない理由?

PHP - クラスを使用して、クリックされたアイテムを識別します。

while($row=mysql_fetch_assoc($queryset)) {?> 
    <li class="list_item"> 
    <?php echo($row['name']);?></li><?php 
} 

jQuery - セレクタはリストアイテムのクラスです。また

<script> 

$(document).on('click', '.list_item', function() { 
    var index = $(this).id; 
    alert("You clicked item " + index); 
}); 

</script> 

:くださいstop using mysql_* functionsThese extensionsがPHP 7で削除されました。PDOMySQLipreparedの文について学び、PDOの使用を検討してください。it's really pretty easy

+0

ええ、私はちょうど私がそれを考え出したと言って戻ってきた、これは私がそれをやった方法でした。私は$( 'ul li ul li')の行に沿って何かをしました。( 'click'、function(){...};それはうまくいったのですが、授業をliに割り当てることはよりスマートな解決策です。 ! –

+0

ちょうど好奇心の外に、ちょうど同様にコンパクトであるちょうどJSでこれを達成する方法がありますか? –

+0

はい@H.H。、あなたはJS単独でそれを行うことができます。これは少しだけコードが必要になりますが、確かに実行できます。 –

0

thisの参照をパラメータとして関数に送ることができます。

<li onclick="liPosition(this)"> 

パラメータを関数に追加します。

<script> 

    function liPosition(listitem) { 
     var index = $(listitem).parent().children().index(listitem); 
     alert("You clicked item " + index); 
    }; 

</script> 

FYI、また、あなたの関数定義});

<script src="http://code.jquery.com/jquery-3.0.0.min.js" integrity="sha256-JmvOoLtYsmqlsWxa7mDSLMwa6dZ9rrIdtrrVYRnDRH0=" crossorigin="anonymous"></script> 
 

 
<li onclick="liPosition(this)">item 1</li> 
 
<li onclick="liPosition(this)">item 2</li> 
 

 
<script> 
 

 
    function liPosition(listitem) { 
 
     var index = $(listitem).parent().children().index(listitem); 
 
     alert("You clicked item " + index); 
 
    }; 
 

 
</script>

関連する問題