Php Javascript函数无法引用动态图像ID
在我的网站上,我有一个导航列表,其中包含代表导航链接的图像,我编写了一个onmouseover javascript函数,该函数将imgsrc更改为图像的较暗版本 我现在认识到,如果导航中有多个列表元素(导航中列表元素的数量是动态的),javascript函数将无法工作。但对于一个元素,它确实起作用 现在我发现了错误:由于图像是在while函数中创建的,因此它总是具有相同的id,因此如果有多个导航元素,它会使用相同的id调用多个图像,因此javascript函数当然不能引用它们 我发现很难解决这个问题。有人能告诉我为什么下面的方法行不通吗Php Javascript函数无法引用动态图像ID,php,javascript,html,javascript-events,Php,Javascript,Html,Javascript Events,在我的网站上,我有一个导航列表,其中包含代表导航链接的图像,我编写了一个onmouseover javascript函数,该函数将imgsrc更改为图像的较暗版本 我现在认识到,如果导航中有多个列表元素(导航中列表元素的数量是动态的),javascript函数将无法工作。但对于一个元素,它确实起作用 现在我发现了错误:由于图像是在while函数中创建的,因此它总是具有相同的id,因此如果有多个导航元素,它会使用相同的id调用多个图像,因此javascript函数当然不能引用它们 我发现很难解决这
<html>
<head>
<script
language="JavaScript">
function over(source,c) {
c.src = "Images/List/streams/"+source+"_mo.png";
}
function out(source,c) {
c.src = "Images/List/streams/"+source+".png";
}
</script>
</head>
<body>
<?php
...
while($row_player = mysql_fetch_object($players)) {
$image = 'pic'.$row_player->Id;
echo "<a href=".$row_player->Page." target=_parent
onmouseover= over(".$row_player->Id,$image.")
onmouseout = out(".$row_player->Id,$image.")>
<li>
<img id=".$image." src=Images/List/streams/".$row_player->Id.".png>
</li>
</a>";
}
...
?>
</body>
</html>
功能结束(源,c){
c、 src=“Images/List/streams/”+source+“\u mo.png”;
}
功能输出(源,c){
c、 src=“Images/List/streams/”+source+“.png”;
}
这是我第一次使用的代码,它只适用于一个元素
<html>
<head>
<script
language="JavaScript">
function over(source) {
pic.src = "Images/List/streams/"+source+"_mo.png";
}
function out(source) {
pic.src = "Images/List/streams/"+source+".png";
}
</script>
</head>
<body>
<?php
...
while($row_player = mysql_fetch_object($players)) {
echo "<a href=".$row_player->Page." target=_parent
onmouseover= over(".$row_player->Id.")
onmouseout = out(".$row_player->Id.")>
<li>
<img id=pic src=Images/List/streams/".$row_player->Id.".png>
</li>
</a>";
}
...
?>
</body>
</html>
功能结束(源){
pic.src=“Images/List/streams/”+source+“\u mo.png”;
}
函数输出(源){
pic.src=“Images/List/streams/”+source+“.png”;
}
顺便说一下,while循环都在一个echo中。您的代码中有一些错误。一个是在
over
和out
函数中,c
是一个字符串(元素的ID),但您将其视为一个元素。使用document.getElementById(c).src=…
而不是c.src=…
另一个问题是,您错误地将参数回显到onmouseover
和onmouseout
。你需要用逗号把它们分开并引用。使用以下命令代替onmouseover=over(“.$row\u player->Id$image”)
onmouseover=\"over(\"".$row_player->Id."\", \"".$image."\")\"
对于onmouseout也一样。引用HTML属性允许您在其值中包含空格(并使其能够验证标记)。您需要引用Javascript函数的参数,否则Javascript会认为图像ID是变量的名称,而不是字符串。您的代码中有一些错误。一个是在
over
和out
函数中,c
是一个字符串(元素的ID),但您将其视为一个元素。使用document.getElementById(c).src=…
而不是c.src=…
另一个问题是,您错误地将参数回显到onmouseover
和onmouseout
。你需要用逗号把它们分开并引用。使用以下命令代替onmouseover=over(“.$row\u player->Id$image”)
onmouseover=\"over(\"".$row_player->Id."\", \"".$image."\")\"
对于onmouseout也一样。引用HTML属性允许您在其值中包含空格(并使其能够验证标记)。您需要引用Javascript函数的参数,否则Javascript会认为图像ID是变量的名称,而不是字符串。嘿,Emily,谢谢您的回答。我已经在查看代码时发现了错误,但是我不知道document.getElementById的事情。我试过了,可惜还是不行。顺便说一下,调用必须以这样的方式结束(“$$Roop-Posier-> ID”,“.$MIGION”),在空白之间,以及“这完全打破了引文。对不起,我不明白你最后的评论。你所说的中断报价是什么意思?在任何情况下,从PHP或Javascript控制台上看到任何错误消息都会很有帮助。哦,我明白了,这是因为如果HTML属性中有一个空格,没有引号页面将无法解析。您应该引用所有HTML属性。您还需要引用作为Javascript参数传递的字符串,例如,
onmouseover=\“over(\'.$row\u player->Id.“\”,\'.$image.\”)\“
。如果在您这样做之后它仍然不起作用,那么请包括您收到的错误消息。我将更新答案以包含这些内容。它是有效的。我不知道为什么,但如果我这样写的话,xD document.getElementById('pic'+source)会起作用。谢谢你的帮助嘿,艾米丽,谢谢你的回答。我已经在查看代码时发现了错误,但是我不知道document.getElementById的事情。我试过了,可惜还是不行。顺便说一下,调用必须以这样的方式结束(“$$Roop-Posier-> ID”,“.$MIGION”),在空白之间,以及“这完全打破了引文。对不起,我不明白你最后的评论。你所说的中断报价是什么意思?在任何情况下,从PHP或Javascript控制台上看到任何错误消息都会很有帮助。哦,我明白了,这是因为如果HTML属性中有一个空格,没有引号页面将无法解析。您应该引用所有HTML属性。您还需要引用作为Javascript参数传递的字符串,例如,onmouseover=\“over(\'.$row\u player->Id.“\”,\'.$image.\”)\“
。如果在您这样做之后它仍然不起作用,那么请包括您收到的错误消息。我将更新答案以包含这些内容。它是有效的。我不知道为什么,但如果我这样写的话,xD document.getElementById('pic'+source)会起作用。谢谢你的帮助