任何人都可以帮助我完成以下任务吗?提前致谢!javascript如何在mousedown上不断移动元素并停止在mouseup上移动
使用JavaScript(我不想使用JQuery),在鼠标下如何继续移动一个元素,如果点击id navLinkLeft,或者继续向右移动,如果点击id navLinkRight,则停止鼠标向上。
<nav>
<a href="#" id="navLinkLeft">Link Left</a>
<div id="navLinks">Navigation Links to Be Moved</div>
<a href="#" id="navLinkRight">Link Right</a>
</nav>
我已经添加了事件监听器,但我不知道如何继续移动元素。目标是在鼠标向下时继续将id navLinks向左或向右移动,并在鼠标向上时停止。
<script>
var navLinkLeft = document.getElementById("navLinkLeft");
navLinkLeft.addEventListener("mousedown", moveLeft, false);
navLinkLeft.addEventListener("mouseup", stopMovingLeft, false);
var navLinkRight = document.getElementById("navLinkRight");
navLinkRight.addEventListener("mousedown", moveRight, false);
navLinkRight.addEventListener("mouseup", stopMovingRight, false);
function moveLeft(){
var navLinks = document.getElementById("navLinks");
var x = -50;
navLinks.style.left += x + "px";
}
function stopMovingLeft(){
}
function moveRight(){
var navLinks = document.getElementById("navLinks");
var x = +50;
navLinks.style.left += x + "px";
}
function stopMovingRight(){
}
</script>
我建议寻找到'setInterval'。当mouseup事件触发时可以使用返回值来取消定时器。请参阅此处:http://www.w3schools.com/jsref/met_win_setinterval.asp – enhzflep 2014-10-12 00:00:58
navLinkLeft.addEventListener(“mousedown”,function(){navLinkLeft.timer = setInterval(moveLeft,100)},false); navLinkLeft.addEventListener(“mouseup”,function(){clearInterva(navLinkLeft.timer)},false); – dandavis 2014-10-12 00:00:59
您可能想要使用[事件捕获](https://developer.mozilla.org/en-US/docs/Web/API/Element.setCapture)。 – jfriend00 2014-10-12 00:09:30