2011-12-24 67 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

你是如何调用函数的? – 2011-12-24 18:29:37

+0

HTML的外观如何?这是预期的吗?如果是这样,JavaScript函数中的row_id是什么?什么是x?这是否如预期的那样?调试从你开始。 (另外,如果您只需要传递值,则没有理由使用DOM元素节点。) – 2011-12-24 18:29:56

+0

您认为图像可能具有什么“价值”?我会认为你会发现''[没有值属性](http://www.java2s.com/Code/HTMLCSSReference/HTML-Tag-Reference/imgJavaScriptProperties.htm)。 – vascowhite 2011-12-24 18:34:48

回答

4

你需要getrating(this.id)代替。图像没有value属性。

+0

非常感谢。我不知道该怎么感谢你才足够。 – mayank23 2011-12-24 18:36:44

2

试试这个:

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

如果行ID值与表单某处的另一个ID相同,那么这不会允许重复的元素ID? – Nonym 2011-12-24 18:35:12

+0

我这样做,并得到[对象HTMLImageElement],所以然后我在这里增加值,“var x = document.getElementById(row_id).value;”但现在我变得不确定。你能帮忙吗?谢谢 – mayank23 2011-12-24 18:35:16

+0

@ mayank23你的元素是一个IMG,正如我所说,IMG标签没有“值”属性。你可以使用id本身,也可以使用数据字段。既然你所追求的“价值”与你使用的ID一样,但它似乎是一个多余的步骤。 – 2011-12-24 18:39:40

0

value不是img标签的有效属性。您可以使用id,或者只是做

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

如果行ID值与表单中某处的另一个ID相同,这不会允许重复的元素ID? – Nonym 2011-12-24 18:35:40

+0

没有比'id ='“。$ row ['ID']。”''更好的了,但那是另一个问题。 – 2011-12-24 18:37:07

+0

另一个问题,但仍然如此,虽然..mayank23应该尽量避免使用'id'作为'id'的值,除非它不可能在代码 – Nonym 2011-12-24 18:43:56

1

或者你也可以通过this.id

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



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

或者你也可以使用事件对象和currentTarget当前欢迎使用属性

<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> 

通过传递this你的函数通过onclick事件,你已经拥有你无需使用document.getElementById()寻找的元素。

0

他们的方式如何逃避身份证可能是问题。我知道这已经得到解答,但只是为了那些需要另一种解决方案的人。

onclick="getrating(\''.$row['ID'].'\')"