2

所以我得到了这个画廊脚本,它工作正常,但我试图导入 onMousedown 函数,所以当我单击并按住“下一个”或“上一个”链接时,图像只是不断循环变化,直到我释放链接

<html>

<head>

<script type='text/javascript'>


var imageGallery = [
"img1.jpg" ,       
"img2.jpg" ,
"img3.jpg",
"img4.jpg"
];

var imgCount = 0;
var totalImgs = imageGallery.length - 1;

function next() {
imgCount++ ;
if(imgCount > totalImgs) imgCount = 0

document.getElementById("gallery").src = imageGallery[imgCount] ;
}

function previous() {
imgCount--;
if(imgCount < 0) imgCount = totalImgs ;
document.getElementById("gallery").src = imageGallery[imgCount] ;    
} 

</script>   

</head>

<body>

<a href="#" onMousedown="next(); return false;">Next</a>
<a href="#" onMousedown="previous(); return false;">Back</a>
<img id="gallery"src="img1.jpg"style="height:420px;width:744px">   

</body>

</html>
4

1 回答 1

1

您可以尝试以这种方式钩住鼠标:

  • 在 mouseDown 事件函数中设置一个间隔并立即执行它;在区间内进行上一个/下一个动作
  • window.onmouseup事件功能中清除间隔

考虑删除内联事件绑定..

HTML:

<a href="#" onMousedown="next(); return false;">Next</a>

<a href="#" onMousedown="previous(); return false;">Back</a>

<img id="gallery" src="http://placehold.it/350x150" style="height:420px;width:744px">

代码:

var imageGallery = [
    "http://placehold.it/350x150",
    "http://placehold.it/350x250",
    "http://placehold.it/350x350",
    "http://placehold.it/350x450"];

var imgCount = 0;
var totalImgs = imageGallery.length - 1;
var timer;

function next() {
    timer = setInterval(function fn() {
        imgCount++;
        if (imgCount > totalImgs) imgCount = 0

        document.getElementById("gallery").src = imageGallery[imgCount];
        return fn;
    }(), 500)
}

function previous() {
    timer = setInterval(function fn() {
        console.log('prev')
        imgCount--;
        if (imgCount < 0) imgCount = totalImgs;
        document.getElementById("gallery").src = imageGallery[imgCount];
        return fn;
    }(), 500)
}

function stopInterval() {
    clearInterval(timer)
}

window.onmouseup = stopInterval;

演示:http: //jsfiddle.net/T42jj/

于 2013-12-11T14:54:01.800 回答