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

CS50 PSet8页面图片切换异常:仅切换一次无法复原求助

图片切换逻辑问题排查与解决

问题描述

我正在VS Code网页编辑器中完成CS50的PSet 8任务,希望网站首页能交替显示两张个人图片。当前代码仅能将图片src从初始值author.JPG切换为author2.jpg一次,之后无法切换回去。已确认文件名完全匹配,推测是代码逻辑问题,请求排查思路。

用户提供的代码:

// Toggles source of image

function rotate()
{
    let pic = document.querySelector('img');
    if (pic.src == 'author2.jpg')
    {
      pic.src = 'author.JPG';
    }
    else
    {
      pic.src = 'author2.jpg';
    }
}

// Rotate every 500ms
window.setInterval(rotate, 3000);

</script>
  <title>My Webpage</title>
</head>
<body>
  <div class="container">
      <div class="row">
        <div class="col">
          <a href="index.html">Home</a>
        </div>
        <div class="col">
          <a href="aboutme.html">About Me</a>
        </div>
        <div class="col">
          <a href="myprojects.html">My projects</a>
        </div>
        <div class="col">
          <a href="resume.html">Resume</a>
        </div>
      </div>
    </div>
  <img src = "author.JPG" alt="The author of this web page" width="600" height="500">
</body>

问题根源

问题出在pic.src的取值逻辑上:它返回的是完整的绝对URL(比如http://localhost:8000/author2.jpg),而非你编写的相对路径author2.jpg。第一次切换后,后续的判断pic.src == 'author2.jpg'永远不成立,代码只会持续执行else分支,因此无法切回原图。

解决方法

方法1:用getAttribute获取原始相对路径

直接读取元素上的原始路径属性,避开绝对路径的干扰:

function rotate()
{
    let pic = document.querySelector('img');
    let currentSrc = pic.getAttribute('src');
    if (currentSrc === 'author2.jpg')
    {
      pic.setAttribute('src', 'author.JPG');
    }
    else
    {
      pic.setAttribute('src', 'author2.jpg');
    }
}

方法2:用includes判断URL包含关系

判断当前URL是否包含目标文件名,无需关注绝对路径前缀:

function rotate()
{
    let pic = document.querySelector('img');
    if (pic.src.includes('author2.jpg'))
    {
      pic.src = 'author.JPG';
    }
    else
    {
      pic.src = 'author2.jpg';
    }
}

方法3:用独立状态变量跟踪显示状态

完全脱离src属性,用变量记录当前显示的图片状态:

let isShowingFirstPic = true;

function rotate()
{
    let pic = document.querySelector('img');
    pic.src = isShowingFirstPic ? 'author2.jpg' : 'author.JPG';
    isShowingFirstPic = !isShowingFirstPic;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:05:33