Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Javascript函数无法引用动态图像ID_Php_Javascript_Html_Javascript Events - Fatal编程技术网

Php Javascript函数无法引用动态图像ID

Php Javascript函数无法引用动态图像ID,php,javascript,html,javascript-events,Php,Javascript,Html,Javascript Events,在我的网站上,我有一个导航列表,其中包含代表导航链接的图像,我编写了一个onmouseover javascript函数,该函数将imgsrc更改为图像的较暗版本 我现在认识到,如果导航中有多个列表元素(导航中列表元素的数量是动态的),javascript函数将无法工作。但对于一个元素,它确实起作用 现在我发现了错误:由于图像是在while函数中创建的,因此它总是具有相同的id,因此如果有多个导航元素,它会使用相同的id调用多个图像,因此javascript函数当然不能引用它们 我发现很难解决这

在我的网站上,我有一个导航列表,其中包含代表导航链接的图像,我编写了一个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)会起作用。谢谢你的帮助