带有鼠标循环的JavaScript库

时间:2013-12-11 14:03:54

标签: javascript onmousedown

所以我得到了这个画廊脚本,它工作正常,但我试图导入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>

1 个答案:

答案 0 :(得分: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/