当我把它放到setInterval循环中时,event.clientY是未定义的

event.clientY is undefined when I put it into a setInterval loop

本文关键字:event clientY 未定义 循环 setInterval      更新时间:2023-09-26

>我正在制作一个用于在页面上移动元素的脚本,我需要在鼠标向下移动时将其置于循环中,否则无法阻止它。但是,一旦由于某种原因将其放入setInterval循环中,我就会收到此错误"未捕获的类型错误:无法读取未定义的属性'clientY'"。我不知道为什么会这样。有人对情况有所了解吗?

$(document).on('mousedown', '#moveMe', function(){
    $(document).on('mousemove', '#moveMe', function(){
        var inLoop = setInterval(function(){
            var y = event.clientY;
            var x = event.clientX;
            $('#moveMe').css('left', parseInt(x)+"px");
            $('#moveMe').css('top', parseInt(y)+"px");
        }, 1);
        $(document).on('mouseup', 'body', function(){
            clearInterval(inLoop);
        });
    });
});

您需要将事件传递给事件处理程序

$(document).on('mousedown', '#moveMe', function(){
    $(document).on('mousemove', '#moveMe', function(event){
        var inLoop = setInterval(function(){
            var y = event.clientY;
            var x = event.clientX;
            $('#moveMe').css('left', parseInt(x)+"px");
            $('#moveMe').css('top', parseInt(y)+"px");
        }, 1);
        $(document).on('mouseup', 'body', function(){
            clearInterval(inLoop);
        });
    });
});