【问题标题】:PHP and JavaScript Product/Image viewerPHP 和 JavaScript 产品/图像查看器
【发布时间】:2017-11-25 21:17:34
【问题描述】:

我正在开发这个网页,它在某种画廊中显示一个产品的多个图像。但是,我在尝试让缩略图在单击时显示为主图像时遇到了很大的麻烦。

这是相关页面的链接:http://www.carbondelight.co.uk./prodview.php?id=50

我正在使用 bxslider (bxslider.com) 作为缩略图滑块,我最初的计划是简单地编写一些 JavaScript 来将主图像更改为相关的缩略图图像。虽然这是我卡住的地方,因为我想不出一个好的方法来实现这一点。

我已经研究过将所有主要图像设置为 display:none; 的方法。禁止一张图像,然后像 Sohtanaka 在他的教程 (http://www.sohtanaka.com/web-design/css-multiple-image-viewer-thumbnails/) 中所做的那样通过 javascipt 更改其显示属性,我已经研究过使用 JavaScript 更改主图像的 src 位置。

我会说我不是 PHP 或 JavaScript 方面的专家,所以我的代码在任何形式或形式上都没有效率,所以我想专注于简单地解决手头的问题,而不是将所有代码更改为让它更有效率。但是,如果我必须重写一些查询来完成这项工作,那么我会全力以赴。

如何让缩略图和主图像正常工作?

注意:我已经清理了代码并取出了一些简单的样式类以使其更具可读性。如果有好处,我也可以包含 CSS。

这是我的代码:

if (isset($_GET['id']))
$id = cleanString($_GET['id']);

$sql = "SELECT * FROM partTable WHERE partID='$id'";
$result = performQuery($sql);

$sql2 = "SELECT car FROM carTable WHERE carID='$result[6]'";
$result2 = performQuery($sql2);

$sql3 = "SELECT category FROM categoryTable WHERE categoryID='$result[7]'";
$result3 = performQuery($sql3);

$sql4 = "SELECT medImg, lrgImg FROM imageTable WHERE partID='$id'";
$result4 = mysql_query($sql4);

$rows = mysql_num_rows($result4);

$sql5 = "SELECT smlImg FROM imageTable WHERE partID='$id'";
$result5 = mysql_query($sql5);

$rows5 = mysql_num_rows($result5);

$row = mysql_fetch_row($result4);
echo "<a id='single_image' href='$row[1]'><img src='$row[0]' /></a>"; 

for ( $j = 1 ; $j < $rows ; $j++)
{
    $row = mysql_fetch_row($result4);
    echo "<a id='single_image' href='$row[1]'><img style='display:none;' src='$row[0]'/></a>"; 
}


echo "<div id='slider1'>";

for ( $j = 0 ; $j < $rows5 ; ++$j)
{
    $row = mysql_fetch_row($result5);
    echo "<div class='pv-thumb'><a href='javascript:void(0)' onclick='superalert()'><img  src='$row[0]'  /></a></div>";
}

echo "</div>";

【问题讨论】:

  • 那么您发现您尝试的方法有什么问题。您提到您尝试使用display:none 并更改主图像的src,但您没有说明为什么不能使用它们。
  • 他们的想法多于实际尝试。我想不出一种方法来实际实施这些想法。例如,如果您看到第一个图像包含默认设置为显示的顶部主图像,并且在 for 循环中我抓取所有其他图像并将它们设置为 display:none。我遇到的问题是编写一些 Javascript 来更改与单击的缩略图相关的主图像上的显示属性。
  • 如果单击图像时没有出现图像,则问题可能出在 superalert() javascript 函数中。我们能看到那个代码吗?
  • 抱歉 superalert() 只是一些测试,看看我是否可以在单击图像时运行一些 javascript。我现在已经删除了它,因为它实际上并没有做任何其他事情:alert("active").
  • 好的,下面是一种可能的解决方案。顺便说一句,您的中等图片的来源是“carbondelight.co.uk./admin/image/proMed/95.jpg” - 您可能希望修复多余的点。

标签: php javascript


【解决方案1】:

好的,这是一个 JavaScript 问题。为了让自己的生活更轻松,给自己弄一份 jQuery,然后你可以这样做:

// Wait for document ready
$(document).ready(function() {
    // Attach to all thumbnails (give all images a class of 'thumbnail')
    $('img.thumbnail').click(function() {
        // Let us assume your thumbs and medium images are thus:
        // Thumb: /admin/image/proSml/96.jpg
        // Medium: /admin/image/proMed/96.jpg

        // Reset source of main image based on thumbnail
        var thumbSrc = $(this).attr('src');
        var medSrc = thumbSrc.replace('proSml', 'proMed');
        $('#mainimage').attr('src', medSrc);
    });
);

【讨论】:

  • 谢谢你,这是一种享受。非常感谢您提供详细的评论并将其直接应用于我的文件扩展名等。我以为我会在这几天。我已经有一个 jQuery 的副本,但我正在尝试使用 Javascript,因为我正在努力改进它。但再次非常感谢您帮助解决这个问题。
  • 没有问题。我确实建议留出一些时间来学习 jQuery,在原始 JS 中通常需要很长时间才能完成的事情非常快!
  • 您好,halfer,我想知道您是否可以帮我解决有关产品查看器的小问题。如果您导航回我的页面 (carbondelight.co.uk./prodview.php?id=50) 并选择一个新的缩略图,然后单击主图像,您会注意到它始终显示相同的 lrgImg 图像。是否可以像更新 标记中的“src”属性一样更新“href”属性?
  • 是的,当然;如果你的&lt;a&gt; 标签直接包裹了主图像,你可以做$('#mainimage').parent().attr('href', 'new-url')。我会让你弄清楚如何确定 new-url :-)
  • 我觉得没问题。尝试 alert()ing lrgHref 的值,看看它是否符合您的预期。另外,在浏览器中检查 JS 控制台,确保没有错误。
猜你喜欢
  • 2011-10-14
  • 2015-07-31
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多