【发布时间】:2018-02-11 21:05:05
【问题描述】:
虽然我对 PHP 的了解还不错,但 Javascript 对我来说是一种看起来很奇怪的 PHP,而且它似乎经常将这种方法反映给我。它的行为很奇怪,我不知道为什么。所以请原谅我缺乏真正的知识。
我正在使用 PHP 和 Javascript 编写图片库。如果站点上只有一个图片库,则效果很好:http://pilgrimstudio.ch/
但是,当同一站点上有第二个画廊时,该模式不起作用。我尝试了各种各样的东西,但没有任何效果 - 我最终出现了不同类型的奇怪行为。似乎 Javascript 没有正确处理图片,但我不明白为什么。这是当前的怪异:http://pilgrimstudio.ch/News(模态仅显示一个 - 第一个 - 图片,没有缩略图,导航功能不起作用)。
代码如下:
<?php
// THIS IS ON THE SITE
$id = 1;
$images = array();
$images[] = array("C37AC30Harmonia/C37.jpg"=>"Die Studer C 37 Röhren Bandmaschine");
$images[] = array("C37AC30Harmonia/Harmonia.jpg"=>"Zwei der drei neuen Harmonia");
$images[] = array("C37AC30Harmonia/PumpHarmonium.jpg"=>"Das sehr seltene Pump-Harmonium");
three_images_row($images, $id);
$id++;
// THE FOLLOWING IS IN FUNCTIONS.INC.PHP
function three_images_row($images3row, $id) {
// MAIN PAGE PICTURE TABLE
echo '<table width="100%" border="0" align="center">
<tr> ';
$number = 1;
$position = array("left", "center", "right");
$position_number = 0;
foreach($images3row AS $index => $value) {
foreach($value AS $pic => $desc) {
echo '
<td>
<div align="'.$position[$position_number].'">
<img class = "img_3" src="../images/'.$pic.'" title="'.$desc.'" onclick="openModal'.$id.'();currentSlide'.$id.'('.$number.')">
</div>
</td>';
$number++;
$position_number++;
if ($position_number == 3) {
echo '</tr><tr>';
$position_number = 0;
}
}
}
echo '</tr>
</table>';
// MODAL
echo '<div id="myModal'.$id.'" class="modal">
<span class="close cursor" onclick="closeModal'.$id.'()">×</span>
<div class="modal-content">';
$number = 1;
$count = count($images3row);
// Main picture in modal
foreach($images3row AS $index => $value) {
foreach($value AS $pic => $desc) {
echo '<div class="mySlides'.$id.'">
<!--<div class="numbertext">'.$number.' / '.$count.'</div>-->
<img src="../images/'.$pic.'" style="width:100%">
</div>';
$number++;
}
}
// Navigation in modal
echo '<a class="prev" onclick="plusSlides(-1)">❮</a>
<a class="next" onclick="plusSlides(1)">❯</a>';
// Caption (= description)
echo '<div class="caption-container">
<p id="caption'.$id.'"></p>
</div>';
// Column (= thumbnails)
echo '<div class="column-container">';
$number = 1;
foreach($images3row AS $index => $value) {
foreach($value AS $pic => $desc) {
echo' <div class="column">
<img class="demo'.$id.' cursor" src="../images/'.$pic.'" onclick="currentSlide'.$id.'('.$number.')" alt="'.$desc.'">
</div>';
$number++;
}
}
echo '</div>
</div>
</div>';
?>
<script>
function openModal<?php echo $id?>() {
document.getElementById('myModal<?php echo $id?>').style.display = "block";
}
function closeModal<?php echo $id?>() {
document.getElementById('myModal<?php echo $id?>').style.display = "none";
}
function currentSlide<?php echo $id?>(n) {
showSlides(slideIndex = n);
}
var slideIndex = 1;
showSlides(slideIndex);
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides<?php echo $id?>");
var dots = document.getElementsByClassName("demo<?php echo $id?>");
var captionText = document.getElementById("caption<?php echo $id?>");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
captionText.innerHTML = dots[slideIndex-1].alt;
}
</script>
<?php
}
?>
<script>
function plusSlides(n) {
showSlides(slideIndex += n);
}
</script>
我猜我将几个 javascript 函数放入 PHP 函数的原因与试图建立对图片的正确引用有关(但我不记得我尝试过的所有变体)。我显然也没有成功。也许整个代码有缺陷,还可以做得更好?
感谢您的帮助!再一次,对于那些不成熟的 Javascript 感到抱歉。
【问题讨论】:
标签: javascript php photo image-gallery