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属性,但您可以获得attribute命名的值value- 您应该使用.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 回答