Javascript 我如何制作一个按钮,该按钮;“逃跑”;从光标开始?

Javascript 我如何制作一个按钮,该按钮;“逃跑”;从光标开始?,javascript,css,Javascript,Css,我试图编写一段代码,当用户用鼠标悬停在按钮上时,它会一直移动(这样就永远不会被点击) 我使用“style.left”来确定新按钮的位置 下面是我编写的函数,它不能像我希望的那样工作: document.getElementById("button5").addEventListener("mouseenter", run); function run() { var posLeft = 500 ; if (posLeft > 450) {

我试图编写一段代码,当用户用鼠标悬停在按钮上时,它会一直移动(这样就永远不会被点击)

我使用“style.left”来确定新按钮的位置

下面是我编写的函数,它不能像我希望的那样工作:

document.getElementById("button5").addEventListener("mouseenter", run);
    function run() {
        var posLeft = 500 ;
        if (posLeft > 450) {
             document.getElementById("button5").style.left = posLeft + "px"; 
                posLeft +=150;
    }
        else if (posLeft >= 800) { 
                    posLeft = 200;
                    document.getElementById("button5").style.left = posLeft +"px"};
    };


我希望按钮继续移动:只要posLeft小于800px,我希望它移动到屏幕的右侧,一旦它通过阈值,我希望ti重置为200px。相反,它只跳到右边一次,不做其他任何事情。

您在错误的范围内声明了
posLeft
。它应该在
run
旁边声明,而不是在它里面声明。因为它在里面,所以每次运行
run
都会得到一个等于500的新
posLeft

或者,您可以从元素中读取值(这可能是一个更好的主意)

还要注意,您的两个条件是相反的。你有

if (posLeft > 450) {
    // ...
} else if (posLeft >= 800) {
    // ...
}
第二个条件永远不会是真的,因为第一个条件总是真的,并且事先经过测试。只要把它们倒过来

因此,大致如下:

document.getElementById(“按钮5”).addEventListener(“鼠标指针”,运行);
函数运行(){
var btn=document.getElementById(“按钮5”);
如果(!btn.style.left){
//默认值为500才能启动
btn.style.left=“500px”;
}否则{
var posLeft=parseInt(btn.style.left);//parseInt忽略末尾的px
如果(posLeft>=800){
btn.style.left=“200px”;
}否则,如果(posLeft>450){
posLeft+=150;
btn.style.left=(posLeft+150)+“px”;
}
}
}

1990年代又一次。lol
var posLeft=500按钮自1995年以来变得更加智能,不再有恐惧感。谢谢,这很有意义,也很有效!从您编写的代码中,我不理解的一件事是!左:这是什么意思!在变量名mean/do?@tzvik15之前-它是否定运算符。它获取其操作数,将其强制为布尔值,然后对该值求反。默认情况下,该按钮没有任何内联
样式,因此
btn.style.left
将为
,强制为
false
。因此,
if(!btn.style.left)
检查是否尚未设置
btn.style.left