You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站手动轮播图在iPhone上无法加载的技术求助

问题:iPhone上手动轮播组件内的MySQL关联图片无法加载,其余图片正常

我网站中从MySQL关联的图片,仅手动轮播组件内的图片无法在iPhone上加载,其余图片显示正常。已尝试修改图片类型、尺寸,甚至替换为其他可正常加载的图片,但轮播内仍无法加载。


相关代码

HTML代码

<?php
require_once "connection.php";
$chalet = $_GET['chaletname'];
$q = "select * from search where  ChaletName='$chalet'";
$result = mysqli_query($con, $q);
$row = mysqli_fetch_row($result);
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>View Chalet</title>
        <meta charset="utf-8">
        <link href="CSS/viewcalendar.css" rel="stylesheet" type="text/css"/>
        <link rel="icon" type="image/png" href="images/favicon.png.ico">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="CSS/VChalet.css"> 

        <style>
            body {
                background-image: url("Images/backg1.jpg");
                background-repeat: no-repeat, repeat;
                background-attachment: fixed;
                background-size: 100% 100%;
            }
        </style>
    </head>
    <body>
        <div class="hero">
            <div class="title">
                <h1><?php echo $chalet ?></h1>
            </div>
        </div> <br> <br>

        <div style="width: 80%; margin: auto;" class="slideshow-container">
            <div class="mySlides fade">
                <div class="numbertext">1 / 5</div>
                <img id ="0" src="" style="width:100%; height: 500px;">
            </div>
            <div class="mySlides fade">
                <div class="numbertext">2 / 5</div>
                <img id ="1" src="" style="width:100%; height: 500px;">
            </div>
            <div class="mySlides fade">
                <div class="numbertext">3 / 5</div>
                <img id ="2" src="" style="width:100%; height: 500px;">
            </div>
            <div class="mySlides fade">
                <div class="numbertext">4 / 5</div>
                <img id ="3" src="" style="width:100%; height: 500px;">
            </div>
            <div class="mySlides fade">
                <div class="numbertext">5 / 5</div>
                <img id ="4" src="" style="width:100%; height: 500px;">
            </div>

            <a class="prev" onclick="plusSlides( - 1)">❮</a>
            <a class="next" onclick="plusSlides(1)">❯</a>
        </div>
        <br>

        <div style="text-align:center">
            <span class="dot" onclick="currentSlide(1)"></span> 
            <span class="dot" onclick="currentSlide(2)"></span> 
            <span class="dot" onclick="currentSlide(3)"></span> 
            <span class="dot" onclick="currentSlide(4)"></span> 
            <span class="dot" onclick="currentSlide(5)"></span> 
        </div>

<script>
    const slideimages = "<?php echo $row['11'] ?>";
    let s = slideimages.split("/");
    let sLen = s.length;
    for (let i = 0; i < sLen; i++) {
    var image = document.getElementById(i);
    function changeImage() {
    image.src = "Images/" + s[i];
    }
    changeImage();
    }
</script>

<script>
    let slideIndex = 1;
    showSlides(slideIndex);
    function plusSlides(n) {
    showSlides(slideIndex += n);
    }
    function currentSlide(n) {
    showSlides(slideIndex = n);
    }
    function showSlides(n) {
    let i;
    let slides = document.getElementsByClassName("mySlides");
    let dots = document.getElementsByClassName("dot");
    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";
    }
</script>

CSS代码

.slideshow-container {
    max-width:85%;
    position: relative;
    margin: auto;
  }
  /* Next & previous buttons */
  .prev, .next {
    cursor: pointer;
    position: absolute;
    top: 50%;
    width: auto;
    padding: 16px;
    margin-top: -22px;
    color: white;
    font-weight: bold;
    font-size: 18px;
    transition: 0.6s ease;
    border-radius: 0 3px 3px 0;
    user-select: none;
  }
  
  /* Position the "next button" to the right */
  .next {
    right: 0;
    border-radius: 3px 0 0 3px;
  }
  
  /* On hover, add a black background color with a little bit see-through */
  .prev:hover, .next:hover {
    background-color: rgba(0,0,0,0.8);
  }
  
  /* Caption text */
  .text {
    color: #f2f2f2;
    font-size: 20px;
    padding: 8px 12px;
    position: absolute;
    bottom: 8px;
    width: 100%;
    text-align: center;
    text-decoration: solid;
  }
  
  /* Number text (1/3 etc) */
  .numbertext {
    color: #f2f2f2;
    font-size: 12px;
    padding: 8px 12px;
    position: absolute;
    top: 0;
  }
  
  /* The dots/bullets/indicators */
  .dot {
    height: 15px;
    width: 15px;
    margin: 0 2px;
    background-color: #bbb;
    border-radius: 50%;
    display: inline-block;
    transition: background-color 0.6s ease;
  }
  
  .active, .dot:hover {
    background-color: #717171;
  }
  
  /* Fading animation */
  .fade {
    animation-name: fade;
    animation-duration: 1.5s;
  }

解决方案

1. 修复JavaScript作用域问题

循环内嵌套函数会导致变量作用域混乱,iOS Safari对此兼容性较差。简化图片赋值逻辑:

const slideimages = "<?php echo $row['11'] ?>";
let s = slideimages.split("/");
let sLen = s.length;
for (let i = 0; i < sLen; i++) {
    const image = document.getElementById(i);
    if (image) { // 增加元素存在性判断,避免报错中断执行
        image.src = "Images/" + s[i];
    }
}

2. 统一路径大小写

iOS Safari对文件路径大小写敏感,检查代码中Images/目录名、图片文件名是否与服务器实际文件完全一致(比如服务器是小写images/,代码里写大写就会加载失败)。

3. 补充fade动画关键帧

当前CSS只声明了动画名称和时长,缺少关键帧定义,iOS Safari无法解析动画,可能导致元素显示异常。添加:

@keyframes fade {
  from {opacity: .4} 
  to {opacity: 1}
}

4. 避免img标签初始src为空

空src会触发无效请求,干扰后续加载。可以设置占位图或初始隐藏图片:

<img id="0" src="Images/placeholder.png" style="width:100%; height: 500px;">

5. 验证PHP输出的图片字符串

确认$row['11']输出的格式正确(比如img1.jpg/img2.jpg),无多余空格或特殊字符。可临时添加调试代码:

<?php var_dump($row['11']); ?>

内容的提问来源于stack exchange,提问作者Riham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:34:52