阅读后如何保持功能活跃? (Javascript)

How do I keep function active after it has been read? (Javascript)

我正在用javascript制作一个简单的网页动画。这是我目前所拥有的:

document.onkeydown = checkKey;
            function checkKey(e) {
                e = e || window.event;
                if (e.keyCode == "38") {
                    var ball=document.getElementById("ball");
                    var posup=0;
                    var speedone=setInterval(up, 0);
                    function up(){
                        if(posup==240){
                            clearInterval(speedone);
                        }else{
                            posup++;
                            ball.style.bottom=posup*2+"px";
                        }
                    }
                }else if(e.keyCode=="40"){
                    var ball=document.getElementById("ball");
                    var posdown=0;
                    var speedtwo=setInterval(down, 0);
                    function down(){
                        if(posdown==240){
                            clearInterval(speedtwo);
                        }else{
                            posdown++;
                            ball.style.top=posdown*2+"px";
                        }
                    }
                }
            }

这段代码应该让一个小白球在按下向上箭头键时向上移动,并在按下向下箭头键时向下移动。可以上升和下降,但是下降后就不能再上升了,只能重新播放下降的动画。我试图将整个事情包含在一个大的父函数中,但它仍然不起作用。我想可能是因为 javascript 是从上到下读取的,所以 "up" 移动代码没有被读取第二次。我需要一些关于如何解决这个问题和启动我的程序的帮助和提示,运行,谢谢。

问题不在于 JavaScript,而在于您使用的样式。

您同时设置了 ball.style.topball.style.bottom,结果位置不一致,因此一个坐标优先于另一个。

如果替换

ball.style.bottom=posup*2+"px"

ball.style.top=480 - posup*2+"px"

您应该会得到预期的结果。