Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SetInterval循环对我来说比较混乱_Javascript_Html_Css_Angularjs - Fatal编程技术网

Javascript SetInterval循环对我来说比较混乱

Javascript SetInterval循环对我来说比较混乱,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,HTML <div id="backspace" ng-click="deleteString(''); decrementCursor();"> JS 我正在设计一个屏幕上的触摸屏键盘。这是我的退格按钮。我将这样做,当你点击并按住退格按钮,它开始自动删除字符。我不知道从哪里开始创建setInterval,我知道setInterval正是我需要在这里使用的 如果我没说错的话,您希望在按住按钮的同时,一个函数会自动重复 你说的对。但是,您管理活动的方式是错误的 看看这把小提琴,它不是

HTML

<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);
    });
});