Javascript 我如何制作一个按钮,该按钮;“逃跑”;从光标开始?
我试图编写一段代码,当用户用鼠标悬停在按钮上时,它会一直移动(这样就永远不会被点击) 我使用“style.left”来确定新按钮的位置 下面是我编写的函数,它不能像我希望的那样工作:Javascript 我如何制作一个按钮,该按钮;“逃跑”;从光标开始?,javascript,css,Javascript,Css,我试图编写一段代码,当用户用鼠标悬停在按钮上时,它会一直移动(这样就永远不会被点击) 我使用“style.left”来确定新按钮的位置 下面是我编写的函数,它不能像我希望的那样工作: document.getElementById("button5").addEventListener("mouseenter", run); function run() { var posLeft = 500 ; if (posLeft > 450) {
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年代又一次。lolvar posLeft=500代码>按钮自1995年以来变得更加智能,不再有恐惧感。谢谢,这很有意义,也很有效!从您编写的代码中,我不理解的一件事是!左:这是什么意思!在变量名mean/do?@tzvik15之前-它是否定运算符。它获取其操作数,将其强制为布尔值,然后对该值求反。默认情况下,该按钮没有任何内联左
样式,因此btn.style.left
将为“
,强制为false
。因此,if(!btn.style.left)
检查是否尚未设置btn.style.left
。