while(鼠标在某个边界框中)做某事; -- 在 JavaScript 中

发布于 2024-11-15 14:03:01 字数 707 浏览 4 评论 0原文

我很困惑。我想做的是:每当我的鼠标指针进入一个盒子时,我想不断改变盒子的颜色。但是,当鼠标离开盒子时,我希望盒子的颜色停止变化。我必须承认我正在学习 JS,变量的作用域给我带来了困难。

在这里:

 var t = true;
 Crafty.addEvent(this,Crafty.stage.elem,"mousemove",function(e){
    if(e.clientX<294)
    {
        console.log("Left edge");
       while(t==true){do something}

    }
    else if(e.clientY<10)
    {
        console.log("Top Edge");


    }
    else if(Math.abs(e.clientX-1084)<10)
    {

        console.log("Right Edge");


    }
    else if(Math.abs(e.clientY-600)<10)
    {
       // console.log("Bottom Edge");


    }
    else
    {
         t = false;
    }




});

更清楚地说,我想在鼠标位于盒子外面时执行操作(我希望两种情况是等效的:盒子外面仍然是盒子)。上面的代码进入无限循环。

I am stumped. What I want to do is: whenever my mouse pointer enters a box, I want to keep changing the color of the box. However, when mouse leaves the box I want the color of the box to stop changing. I must admit that I am learning JS and scope of variables is giving me hard time.

Here you go:

 var t = true;
 Crafty.addEvent(this,Crafty.stage.elem,"mousemove",function(e){
    if(e.clientX<294)
    {
        console.log("Left edge");
       while(t==true){do something}

    }
    else if(e.clientY<10)
    {
        console.log("Top Edge");


    }
    else if(Math.abs(e.clientX-1084)<10)
    {

        console.log("Right Edge");


    }
    else if(Math.abs(e.clientY-600)<10)
    {
       // console.log("Bottom Edge");


    }
    else
    {
         t = false;
    }




});

To be more clear, I want to perform an operation when mouse is outside a box(I hope both cases are equivalent: out side a box is still a box). Above code goes into infinite loop.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

把梦留给海 2024-11-22 14:03:01

像这样? http://jsfiddle.net/2eWkN/

var box = document.getElementById('box'),
    changeColor = function() {
        var r = ~~(Math.random() * 255),
            g = ~~(Math.random() * 255),
            b = ~~(Math.random() * 255);
        box.style.backgroundColor = "rgb(" + r + ',' + g + ',' + b + ')';
    },
    intvl;

box.onmouseover = function() {
    intvl = setInterval( changeColor, 50 );
};
box.onmouseout = function() {
    clearInterval( intvl );
};

Like this? http://jsfiddle.net/2eWkN/

var box = document.getElementById('box'),
    changeColor = function() {
        var r = ~~(Math.random() * 255),
            g = ~~(Math.random() * 255),
            b = ~~(Math.random() * 255);
        box.style.backgroundColor = "rgb(" + r + ',' + g + ',' + b + ')';
    },
    intvl;

box.onmouseover = function() {
    intvl = setInterval( changeColor, 50 );
};
box.onmouseout = function() {
    clearInterval( intvl );
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文