关于js替换图片路径的问题

关于js替换图片路径的问题

老师我想点击一次后,每隔100毫秒替换一次图片路径  可是我的图片有的不到80张,当不到80张时比如25张 它会先加载第26张不存在的图片路径(整个div会变为背景为白色),然后再判断第26张是否存在,然后返回到第一张图片。   请问为什么会这样,怎样修改?

js代码》》

window.onload=function(){

   var div = document.getElementById('div1');

   var imgas = document.getElementById('tom');

   var index = 0;

   var path = new Image();

       div.addEventListener('click',function(event){

           // 获取id值

           var name = event.target.id;

           function add(){

               index++;

               if(index < 10){

                   // 保存图片地址

                   path.src = name+'/'+name+'_0'+index+'.jpg';

               }

               else if(index<=80 && path.width == 640){

                   // 保存图片地址

                   path.src = name+'/'+name+'_'+index+'.jpg';

               }else if(path.width != 640){

                   // 保存图片地址

                   path.src = name+'/'+name+'_00'+'.jpg';

                   // 清除定时器

                   clearInterval(tatol);

                   index = 0;

               }else{

                   // 清除定时器

                   clearInterval(tatol);

                   index = 0;

               }

               // 替换图片地址

               imgas.src = path.src;

           }

           

           if(index<=80){

               // 定时器

               var tatol = setInterval(add,100);

           }

       },false);

}  

HTML代码》》

<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <meta http-equiv="X-UA-Compatible" content="ie=edge">

   <title>2017/11/21会说话的汤姆猫</title>

<style>

   h1{

       text-align: center;

       font-family: '楷体';

       font-size: 30px;

       color: red;

   }

       #div1{

           /* border: 2px solid red; */

           width: 500px;

           height: 700px;

           /*margin 设置外边距, auto居中 */

           margin:50px auto;

           /* 相对定位,为了让这个红框内的所有按钮,相对于红框做位置的调整 */

           position: relative;

       }

       .img1 {

           width:500px;

           height:700px;        

       }

       /* 根据ID找到头部的按钮 */

       #knockout{

           /* 宽度高度 */

           width: 180px;

           height: 220px;

           /* 设置背景颜色 */

           /* background-color: rebeccapurple; */

           /* 坐位置的调整 */

           /* 绝对定位 */

           position: absolute;

           /* 通过top,left,right,bottom样式调整位置*/

           top: 130px;

           right:160px;

       }

       #stomach{

           width: 140px;

           height: 200px;

           /* background-color: royalblue; */

           position: absolute;

           bottom: 80px;

           left:180px;

       }

       #foot_right{

           width: 40px;

           height: 50px;

           /* background-color: black; */

           position: absolute;

           bottom:30px;

           left:190px ;

       }

       #foot_left{

           width: 40px;

           height: 50px;

           /* background-color:black; */

           position: absolute;

           bottom: 30px;

           right: 200px;

       }

       #angry{

           width: 60px;

           height: 80px;

           /* background-color: forestgreen; */

           position: absolute;

           bottom: 80px;

           right: 110px;

       }

       /* 鸽子 */

       #eat{

           /* 吃鸽子 */

           width: 50px;

           height: 50px;

           /* background-color: red; */

           /* 背景图片 */

           background-image:url("按钮/eat.png");

           /* 背景图片的大小 */

           background-size: 50px 50px;

           position:absolute;

           left: 50px;

           top:320px;

       }

       /*  */

       #cymbal{

           width: 50px;

           height: 50px;

           background-image: url("按钮/cymbal.png");

           background-size: 50px 50px;

           position: absolute;

           right: 50px;

           top:320px;          

       }

       /* 牛奶 */

       #drink{

           width: 50px;

           height: 50px;

           background-image: url("按钮/drink.png");

           background-size: 50px 50px;

           position: absolute;

           right: 50px;

           top:400px;


       }

       #fart{

           width: 50px;

           height: 50px;

           background-image: url("按钮/fart.png");

           background-size: 50px 50px;

           position: absolute;

           left: 50px;

           top:400px;


       }

       #pie{

           width: 50px;

           height: 50px;

           background-image: url("按钮/pie.png");

           background-size: 50px 50px;

           position: absolute;

           right: 50px;

           top:250px;

       }

       #scratch{

           width: 50px;

           height: 50px;

           background-image: url("按钮/scratch.png");

           background-size: 50px 50px;

           position: absolute;

           left: 50px;

           top:250px;

           

       }

</style>

<script src="script.js"></script>


</head>

<body>

<h1>我家的汤姆猫</h1>

<div id="div1">

   <img  src="汤姆猫.jpg" alt="这是汤姆猫" title="" class="img1" id="tom">

   

       <div id="knockout"></div>

       <div id="stomach"></div>

       <div id="foot_left"></div>

       <div id="foot_right"></div>

       <div id="angry"></div>


       <div id="eat"></div>

       <div id="cymbal"></div>

       <div id="drink"></div>

       <div id="fart"></div>

       <div id="pie"></div>

       <div id="scratch"></div>

</div>


</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

明白了你是想做个汤姆猫的效果哦。建议你这样,图片的条件不必限制在80张,你给每个动作按钮上都添加一个属性,用来标注该动作共有多少张图片,例如:

第一个动作,共有25张图片,就用data-num设置一个值为25的属性

http://img1.sycdn.imooc.com//climg/5ad83ca400017dcb11060512.jpg

在点击该动作按钮时,获取该按钮的id外,在获取一下data-num的值。在定时器的作用下,累加index,切换图片,直到index大于图片总量data-num的时候,清除定时器,index置为0,如下:

http://img1.sycdn.imooc.com//climg/5ad83d040001895f09280743.jpg

因为没有图片,没办法测试,所以只能给你这么一个思路,希望能帮助到你

  • qq_时间太冷_0 提问者 #1
    谢谢 想到了前面章节讲的添加的自定义属性,做到了我想要的效果
    2018-04-19 15:44:05
怎么都被占用了呢 2018-04-19 12:03:08

虽然没能太明白你的意思,但是看你的描述,你是想当要加载的那张图片不存在的时候,那就不加载了,显示第一张即可,是吗,如果是这样的话,你可以将下图标注的2句代码换换位置

http://img1.sycdn.imooc.com//climg/5ad814f900013e0707000254.jpg

  • 提问者 qq_时间太冷_0 #1
    还是不行啊! 不存在的图片还是会加载
    2018-04-19 12:47:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师