0

我有一个动态创建的 html 表,每行的最后一个单元格中有一张图片(如.png)。我想要实现的是在用户单击此图片后显示另一张图片(like1.png)。但是我不断收到“Null 不是对象”,我的 javascript 代码可能有问题...

谢谢您的帮助 :)

这是我创建表的 php:

<?php
$pictureid = 1;

            while($results = mysql_fetch_array($raw_results)){
            // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop

            echo '<tr>';
            echo'<td>'. ucfirst($results['song_name']).'</td>';
            echo'<td>'. ucfirst($results['song_artist']).'</td>';
            //echo'<td>'. ucfirst($results['song_album']).'</td>';

                echo '<td>';

                echo  '<img src="images/like.png" id="artist'.$pictureid.'" onClick="action(artist'.$pictureid.')"/></a>';
                echo '</td>'; 
                echo '</tr>';

                $pictureid = $pictureid + 1;

                }

这是我的javascript:

<script language="javascript">
   function action(imageid)
{
if(document.getElementById(imageid).src == 'like.png' )
document.getElementById(imageid).src = 'like1.png';
else
document.getElementById(imageid).src = 'like1.png';
}
</script>          
4

1 回答 1

1

您在这里缺少一些引号:

echo  '<img ... onClick="action(\'artist'.$pictureid.'\')"/></a>';
// quotes missing here ----------^---------------------^

在您的输出 HTML 中,它当前应该如下所示:

<img ... onClick="action(artist1)"/>

这将调用该方法action()并使用 name 的变量,该变量artist1不存在。所以在你的方法document.getElementById()返回null并且你得到错误。

但是,您的方法需要字符串输入,因此您应该用引号将参数括起来,以便它生成如下输出:

<img ... onClick="action('artist1')"/>
于 2013-09-24T15:16:57.697 回答