<script>
let step = 10, //步长
index = 0, //图片数
flag = -1, //方向系数
dis = 0, //移动距离
width = 400, //图片宽度
num = 5; //图片数
const pics = ['../one.jpg', '../two.jpg', '../three.jpg', '../four.jpg', '../five.jpg'];
let wrapper = document.querySelector('.wrapper');
let menu = document.querySelector('.menu');
//加载图片
pics.forEach(val => {
let img = document.createElement('img');
let smallImg = document.createElement('img');
img.src = val;
smallImg.src = val;
wrapper.appendChild(img);
menu.appendChild(smallImg);
});
//自动添加后排图片
function addPic() {
pics.forEach(val => {
let img = document.createElement('img');
img.src = val;
wrapper.appendChild(img);
});
}
//获取style
function getStyle(ele, cssname) {
if (window.getComputedStyle) {
return window.getComputedStyle(ele)[cssname];
} else {
return ele.currentStyle[cssname];
}
}
//移动
function pace() {
let curPos = parseInt(getStyle(wrapper, 'left'));
console.log('pace');
console.log(to);
console.log(curPos);
wrapper.style.left = curPos + flag * step + 'px';
dis += flag * step;
//移动到图片最后一步
if (Math.abs(to - dis) < step) {
wrapper.style.left = to + 'px';
dis = to;
index++;
clearInterval(pacer);
// setTimeout(() => {
// timer = setInterval(pace, 100);
// }, 2000);
} else {
wrapper.style.left = curPos + flag * step + 'px';
dis += flag * step;
}
}
//移动一张图
function move(direction) {
let to = -width * index; // 目标位置
//判断方向 -1-left 1-right
flag = direction === 1 ? 1 : -1;
console.log(to);
console.log(dis);
pacer = setInterval(pace, 100);
}
//自动
function auto() {
addPic();
index++;
move(flag);
}
auto();
</script>
浏览器一直提示
Uncaught ReferenceError: to is not defined at pace
可是to不是在move()里面定义了吗?
我也不知道哪里出现了问题,求大佬们指教?
应该是作用域的问题,move跟pace是在同一作用域被声明的,而pace中的变量只能在本作用域或向上查找,