2011-12-24 26 views
0

私はmysqlデータベースのIDである値を取得しようとしています。ただし、画像をクリックするたびにnullと表示されます。私は値を得るためにthisを使用しましたが、警告ボックスにnullを与え続けるので、動作しません。PHPからJavaScriptへの値渡し

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <?php 
     mysql_connect('localhost','root',''); 
     mysql_select_db("ajax"); 
     $query="SELECT * FROM xxxx"; 
     $result= mysql_query($query); 

     while($row= mysql_fetch_array($result)){ 
      echo "<img src='".$row['filepath']."' value='".$row['ID']."' id='".$row['ID']."' onclick='getrating(this.value);'>"; 

      echo "<br>"; 
     } 
    ?> 

    <script type="text/javascript" > 
     function getrating(row_id){ 
      var x = document.getElementById(row_id); 
      alert(x); 
     } 
    </script> 
</body> 
</html> 

何が問題ですか?

+0

どのように関数を呼び出していますか? –

+0

HTMLの外観はどうですか?これは期待されたものですか?その場合は、JavaScript関数のrow_idは何ですか? xとは何ですか?期待通りですか?デバッグはあなたから始まります。 (値を渡すだけでいいのであれば、DOM要素ノードを使用する理由はありません) –

+0

イメージにはどのような価値があると思いますか?私はあなたが '' [値のプロパティを持たない](http://www.java2s.com/Code/HTMLCSSReference/HTML-Tag-Reference/imgJavaScriptProperties.htm)を見つけると思います。 – vascowhite

答えて

4

行うことができます。画像にはvalueというプロパティはありません。

+0

ありがとうございます。あなたには感謝してもしきれません。 – mayank23

2

これを試してみてください:

echo "<img src='".$row['filepath']."' id='".$row['ID']."' onclick='getrating(".$row['ID'].");'>"; 
+1

行IDの値がフォーム内の別のIDと同じ場合、重複要素IDは許可されませんか? – Nonym

+0

私はこれを行い、[object HTMLImageElement]を取得しましたので、ここで値を追加しました。 "var x = document.getElementById(row_id).value;"しかし、今私は定義されていません。あなたは助けることができますか?ありがとう – mayank23

+0

@ mayank23あなたの要素はIMGです。私が言ったように、IMGタグには「価値」属性がありません。 ID自体、またはデータフィールドを使用できます。あなたがしている "価値"は、あなたがIDとして使用しているのと同じものなので、それは冗長な一歩と思われます。 –

0

valueimgタグの有効な属性ではありません。あなたはid使用、またはちょうどあなたが代わりにgetrating(this.id)が必要

echo "<img ... onclick='getrating($row[ID]);'>"; 
+0

行IDの値がフォーム内の別のIDと同じ場合、これは重複要素IDを許可しませんか? – Nonym

+0

'id = '"。$ row [' ID ']。 "''以上はありませんが、それは別の問題です。 –

+0

もう1つの問題ですが、それでもなお真です。mayank23は、コードの他の部分で繰り返される可能性が低い場合を除いて、 'id'を' id'の値として使用しないようにしなければなりません。 – Nonym

1

それともthis.id

<img id="row_12" onclick="getrating(this.id)" alt="image"/> 



function getrating(id){ 
    alert(id); 
} 

を渡すことができそれとも、valueプロパティを持っていないイベントオブジェクトとは、currentTarget propety

<img id="row_12" onclick="getrating(event)" alt="image"/> 



function getrating(e){ 
    alert(e.currentTarget.id); 
} 
0

<img>を使用することができます。

あなたの機能にも不必要な作業があります。あなたのコードは次のようになります -

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <?php 
     mysql_connect('localhost','root',''); 
     mysql_select_db("ajax"); 
     $query="SELECT * FROM xxxx"; 
     $result= mysql_query($query); 

     while($row= mysql_fetch_array($result)){ 
      echo "<img src='".$row['filepath']."' value='".$row['ID']."' id='".$row['ID']."' onclick='getrating(this);'>"; 

      echo "<br>"; 
     } 
    ?> 

    <script type="text/javascript" > 
     function getrating(element){ 
      alert(element); 
     } 
    </script> 
</body> 
</html> 

onclickイベントを通して、あなたの関数にthisを渡すことによって、あなたはすでにあなたがdocument.getElementById()を使用することなく、探している要素を持っています。

0

IDをエスケープする方法が問題になる可能性があります。私はこれが既に答えられていることを知っていますが、別の解決策を必要とする人々のためにのみです。

onclick="getrating(\''.$row['ID'].'\')" 
関連する問題