1

わかりましたので、基本的に $row['cardid'] にあるものを取得して、div タグの値に設定しようとしています。次に、これがエコーしているhtmlファイルで、divタグの値を使用する関数を実行します。現在、onclickを使用すると、プルアップしますが、値が未定義であると表示されます。私の質問は、html を使用してプルアップしたときに変数が定義されていないのはなぜですか?

<?php
$q=$_GET["q"];
$con = mysql_connect("*", "*", "*");
if (!$con)
    {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("*", $con);
$sql="SELECT cardset, cardname, cardnumber, cardid FROM cards WHERE cardname LIKE '%".$q."%' OR cardset LIKE '%".$q."%'"; 
$result = mysql_query($sql) or die ('Error: '.mysql_error ());

echo "<table border='1'>
<tr>
<th>#</th>
<th>Cardname</th>
<th>Card Set</th>
</tr>";
while ($row = mysql_fetch_array($result)) 
{
echo "<tr>";
echo "<td>" . $row['cardnumber'] . "</td>";
// This is the troubled line.
echo '<td><div value="'.$row['cardid'].'" onclick="changeimage(this.value)">' . $row['cardname'] . '</div></td>';
echo "<td>" . $row['cardid'] . "</td>";
echo "<td>" . $row['cardset'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
4

4 に答える 4

1

質問の意味がよくわかりませんが、こういうことですか?

echo '<td><div onclick="changeimage(this.id)" id="'.$row['cardid'].'">' . $row['cardname'] . '</div></td>';

基本的に値の代わりに ID を使用します。

例: jsFiddle

于 2012-06-23T22:13:03.353 に答える
1

div要素にはプロパティがありませんが、名前付きvalueの値を取得できます-使用する必要があります:attributevalue.getAttribute("value")

 echo '<td><div value="'.$row['cardid'].'" onclick="changeimage(this.getAttribute(\"value\")">' . $row['cardname'] . '</div></td>';

例: http://jsfiddle.net/vaSYh/

また、DOM 要素にデータを格納する必要がある場合は、属性を使用しdata-ます。(または、現時点で HTML5 をサポートする必要がない場合でも、そのように名前を付けてください。移行が容易になります)

于 2012-06-23T22:15:37.893 に答える
1

this.value を使用しないでください。それはフォームではありません。

this.innerText または this.innerHtml を使用して、div のコンテンツを取得します

于 2012-06-23T22:17:57.050 に答える
0

あなたの答えが正しく理解できたら、$row['cardid'] の値を警告しますか? あなたのコードでは、javascript コードと php コードを混同しているため、正しい値を取得できません。「onclick」イベント ハンドラの「this」キーワードは JavaScript 関数自体であり、「value」プロパティはありません。正しい値を警告するには、次のコードを試してください。

echo '<td><div value="'.$row['cardid'].'" onclick="changeimage('.$row['cardid'].'">'. $row['cardname'] . '</div></td>';
于 2012-06-23T22:21:21.203 に答える