-1

我有一些我目前正在做的事情,但似乎 $_GET 并没有完全工作。

我有一个 JavaScript 灯箱,可以在一个小窗口中显示一个图像,这很有效,但是我只能猜测它一遍又一遍地使用相同的 URL。

但是,当我查看页面的源(甚至单击源中的链接之一)时,它将显示正确的数据。

但灯箱似乎只显示第一张图片。

这是 JavaScript

<script>
//Checkes if any key pressed. If ESC key pressed it calls the lightbox_close() function.
window.document.onkeydown = function (e)
{
if (!e){
    e = event;
}
if (e.keyCode == 27){
    lightbox_close();
}
}
</script>

<script>
//This script makes light and fade divs visible by setting their display properties to        block. 
//Also it scrolls  the browser to top of the page to make sure, the popup will be on  middle of the screen.
function lightbox_open(){
window.scrollTo(0,0);
document.getElementById('light').style.display='block';
document.getElementById('fade').style.display='block';  
}
</script>

<script>
//This makes light and fade divs invisible by setting their display properties to none.
function lightbox_close(){
document.getElementById('light').style.display='none';
document.getElementById('fade').style.display='none';
}
</script>

我不会展示我认为无关紧要的 CSS(如果有人想要它,那就问吧)

创建链接的相关部分是这个,它是 ForEach 语句的一部分,所有 PHP

$i = 0;
foreach ($nrows as $nrow)
{
$id = $nrow['id'];
$rid = $nrow['RaidID'];
$bid = $nrow['BossID'];
$normal = $nrow['NormalKills'];
$heroic = $nrow['HeroicKills'];
$boss = substr($nrow['BossName'], 0, 3);
$p1 = $id + $bid.".php";
$image = $boss . $p1;

#echo $image;
echo $bid;

if ($oid != $rid)
{
$i = 0;
}
if ($i == 0) {

?><td style="width: 176px;"><center><b><?php echo $nrow['raid']; ?> </b></center></td> </tr><?php
$i++;
}
?><tr><td style="width: 176px;"><div align="left"><a href="#"     onclick="lightbox_open();"><?php echo $nrow['BossName']; ?></a><div id="light"><img     src="bossdata/template.php?boss=<?php echo $bid;?>"></a></div><div id="fade"     onClick="lightbox_close();"></div>
</div>
<?php 
if ($heroic == 0) 
{ 
if ($normal > 0) 
{
echo '<img src="images/whiteskull.png" align="right" alt="Normal Kill">';
} 
else 
{ 
echo '<img src="images/redx.png" align="right" alt="Not Killed">';
} 
}
else
{
echo '<img src="images/redskull.png" align="right" alt="Normal Kill">'; 
}
?>
</td></tr><?php
$oid = $id;
}    

现在这一切正常,它实际上显示了一个带有数据的图像,但是无论我点击哪个链接,老板数据总是来自列表中的第一个。

对我来说,这意味着数据正在通过,并到达图像上的正确部分,因此它“工作”,但所有链接都做同样的事情并显示相同的数据:(

*删除最后一个代码批量

4

2 回答 2

1

由于您在 foreach 循环中创建它们,因此您有多个具有相同 ID“light”的 div。

<div id="light">

您的函数 lightbox_open() 打开所有 id 为“light”的 div。

document.getElementById('light').style.display='block';

这就是为什么你总是看到第一个灯箱。因为其他人落后于第一个。

你应该尝试这样的事情:

function lightbox_open(elem){
    window.scrollTo(0,0);
    elem.getElementByClass('light').style.display='block';
    elem.getElementByClass('fade').style.display='block';  
}

并改变这个:

<a href="#"     onclick="lightbox_open();">

这样 :

<a href="#"     onclick="lightbox_open(this);">

并在您的 div 定义中按类替换 id :

<div class="light">
于 2013-07-24T16:04:03.977 回答
0

$_GET 在您的代码中正常工作。

问题在于您在第二个代码框中组合 JavaScript 和 PHP 的方式。首先,所有的 div 都具有相同的 ID:“light”,这是错误的,因为它们的所有 ID 在 HTML 文档中都是唯一的。您需要唯一标识它们,例如将 BossID 附加到它们。

在唯一标识每个 div 之后,您必须编辑 lightbox_open 和 lightbox_close,以便它们可以接收您要显示和隐藏的 div 的 BossID。

于 2013-07-24T16:01:41.237 回答