Javascript SetInterval循环对我来说比较混乱
HTMLJavascript SetInterval循环对我来说比较混乱,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,HTML <div id="backspace" ng-click="deleteString(''); decrementCursor();"> JS 我正在设计一个屏幕上的触摸屏键盘。这是我的退格按钮。我将这样做,当你点击并按住退格按钮,它开始自动删除字符。我不知道从哪里开始创建setInterval,我知道setInterval正是我需要在这里使用的 如果我没说错的话,您希望在按住按钮的同时,一个函数会自动重复 你说的对。但是,您管理活动的方式是错误的 看看这把小提琴,它不是
<div id="backspace" ng-click="deleteString(''); decrementCursor();">
JS
我正在设计一个屏幕上的触摸屏键盘。这是我的退格按钮。我将这样做,当你点击并按住退格按钮,它开始自动删除字符。我不知道从哪里开始创建setInterval,我知道setInterval正是我需要在这里使用的 如果我没说错的话,您希望在按住按钮的同时,一个函数会自动重复 你说的对。但是,您管理活动的方式是错误的 看看这把小提琴,它不是你的代码,但一个简单的例子是最好的理解方式:
我在按下按钮时启动间隔,存储它,并在松开按钮时清除它。如果我没有错,您希望在按住按钮的同时,一个功能会自动重复 你说的对。但是,您管理活动的方式是错误的 看看这把小提琴,它不是你的代码,但一个简单的例子是最好的理解方式: 我在按下按钮时启动间隔,存储它,然后在松开按钮时清除它。您对设置间隔非常确定 若浏览器由于某种原因(比如后台任务)短暂挂起,setInterval将继续对退格调用进行排队,直到有一些CPU时间。这意味着用户可能看不到任何变化,并在需要的时间内保持退格,然后当浏览器恢复正常时,会看到一大堆字符突然消失 因此,通过在每次呼叫后设置超时,您可以确保用户不会删除超过需要的字符。如果目标是改进用户体验,那么这可能很重要 另见: 你对赛特间隔很有把握 若浏览器由于某种原因(比如后台任务)短暂挂起,setInterval将继续对退格调用进行排队,直到有一些CPU时间。这意味着用户可能看不到任何变化,并在需要的时间内保持退格,然后当浏览器恢复正常时,会看到一大堆字符突然消失 因此,通过在每次呼叫后设置超时,您可以确保用户不会删除超过需要的字符。如果目标是改进用户体验,那么这可能很重要 另见:
问题是什么?有错误吗?我仍然不确定你到底想要什么;请提供进一步解释,是否要用div模拟退格按钮?问题是什么?是否有错误?我仍然不确定你到底想要什么;请提供进一步的解释,你想用div来模拟退格按钮吗?很好的例子,但我没有使用jQuery,不能。如果向下投票的人至少可以帮助我改进我的答案,我很乐意阅读他们的建议:也许有人向下投票,因为你的答案没有直接涉及AngularJS。最大的障碍是将代码放在AngularJS中的何处,您可能应该将其放在指令中,而如何编写指令则有点不明显。除此之外,你的答案是有效的,请投赞成票,但我个人更喜欢设定暂停时间而不是间隔时间@abejdaniels,如果您使用的是AngularJS,那么您已经在使用jQuery,或者至少是它的“lite”版本,它支持jQueryAPI的重要部分。请看。很好的例子,但我没有使用jQuery,不能tbh。如果投票否决的人至少可以帮助我改进我的答案,我很乐意阅读他们的建议:也许有人投票否决了,因为你的答案没有直接涉及AngularJS。最大的障碍是将代码放在AngularJS中的何处,您可能应该将其放在指令中,而如何编写指令则有点不明显。除此之外,你的答案是有效的,请投赞成票,但我个人更喜欢设定暂停时间而不是间隔时间@abejdaniels,如果您使用的是AngularJS,那么您已经在使用jQuery,或者至少是它的“lite”版本,它支持jQueryAPI的重要部分。看见
<script>
$scope.deleteString = function() {
if($scope.cursorPosVal > 0){
//$scope.name = $scope.name - letter;
$scope.name = [$scope.name.slice(0, $scope.cursorPosVal - 1) + $scope.name.slice($scope.cursorPosVal)].join('');
console.log($scope.name);
setTimeout(function(){ setCaretPosition("inputBox", $scope.cursorPosVal); }, 30);
} else {
$scope.cursorPosVal = 1;
}
};
</script>
$(function(){
var interval = null;
$('#myButton').mousedown(function(){
interval = setInterval(function(){
console.log('Hello !');
}, 250);
});
$('#myButton').mouseup(function(){
clearInterval(interval);
});
});