javascript setInterval()在Dreamweaver中工作,但在Chrome中不工作

javascript setInterval()在Dreamweaver中工作,但在Chrome中不工作,javascript,google-chrome,dreamweaver,compatibility,setinterval,Javascript,Google Chrome,Dreamweaver,Compatibility,Setinterval,每当用户单击标签中包含onClick=“move()”的菜单图像时,我都会尝试从菜单上下拉图像。到目前为止,图像从页面顶部开始,在菜单后面,因此被隐藏,然后按预期向下滑动。然而,在图像到达停止点后,当我在IE和Chrome中测试页面时,再次单击菜单完全没有任何作用。在Dreamweaver中,代码按预期执行,能够在图像到达底部后向上滑动,然后再次向下滑动。我尝试更改对setInterval()的调用,因为我假设这就是问题所在,但似乎没有任何效果。为什么Dreamweaver正确执行代码,而不是C

每当用户单击标签中包含
onClick=“move()”
的菜单图像时,我都会尝试从菜单上下拉图像。到目前为止,图像从页面顶部开始,在菜单后面,因此被隐藏,然后按预期向下滑动。然而,在图像到达停止点后,当我在IE和Chrome中测试页面时,再次单击菜单完全没有任何作用。在Dreamweaver中,代码按预期执行,能够在图像到达底部后向上滑动,然后再次向下滑动。我尝试更改对setInterval()的调用,因为我假设这就是问题所在,但似乎没有任何效果。为什么Dreamweaver正确执行代码,而不是Chrome或IE

    var onMusic=false;
    var id;
    function move() {
        if(!onMusic) {
          moveDown()        
        }
        else {
            moveUp()
        }
    }


    function moveUp() {
        top=100
        id = setInterval(function() {
            top-=10  // update parameters 
            document.getElementById('guitar').style.top = top + 'px' // show frame
            if (top <= -500)  {// check finish condition
                onMusic=false
                clearInterval(id)
            }
         }, 10) // draw every 10ms
    }

    function moveDown() {
        var top=-500
        id = setInterval(function() {
            top+=10  // update parameters 
            document.getElementById('guitar').style.top = top + 'px' // show frame
            if (top == 100)  {// check finish condition
                onMusic=true
                clearInterval(id)
            }
        }, 10) // draw every 10ms
    }
var onMusic=false;
变量id;
函数move(){
如果(!onMusic){
向下移动()
}
否则{
上移
}
}
函数moveUp(){
顶部=100
id=setInterval(函数(){
top-=10//更新参数
document.getElementById('guitar').style.top=top+'px'//显示框架

if(top
id
仅在
moveDown
函数范围内可见。将其设置为全局,以便在
moveUp
中调用
clearInterval(id)

改变

function moveDown() {
    var top=-500
    var id = setInterval(function() {


每十分之一毫秒(
.1
)更改dom可能有点极端…

id
只能从
moveDown
函数的作用域中看到。将其设置为全局,以便可以在
moveUp
中调用
clearInterval(id)

改变

function moveDown() {
    var top=-500
    var id = setInterval(function() {


每隔十分之一毫秒(
.1
)更改dom可能有点极端…

我认为问题在于:

top=100
// should be
var top = 100;
您可以在控制台中尝试了解我的意思:

>top = 12 
12 
> top 
Window {top: Window, window: Window, location: Location, Proxy: Object, external: Object…}
但我在JSFIDLE中对其进行了更多的清理:
我认为问题在于:

top=100
// should be
var top = 100;
您可以在控制台中尝试了解我的意思:

>top = 12 
12 
> top 
Window {top: Window, window: Window, location: Location, Proxy: Object, external: Object…}
但我在JSFIDLE中对其进行了更多的清理:

10ms是
10
,而不是
.1
,或者?global window.top在chrome中似乎有意义..你应该修正moveUp使其成为一个变量..10ms是
10
,而不是
.1
,或者?global window.top在chrome中似乎有意义..你应该修正moveUp使其成为一个变量..好的,我已经处理好了d
var id;
与我的其余全局变量一起。
id
moveUp()中声明
同样如此,所以我认为这并没有改变任何事情。在Dreamweaver中仍然有效,但在浏览器中不起作用。是的,我不得不在测试的时候玩转时间,因为Dreamweaver中的滑动速度要慢得多。好吧,我已经解决了这个问题,并将
var id;
放在了我的其他全局变量中。
id
被宣布为我n
moveUp()
也一样,所以我认为这不会改变任何事情。在Dreamweaver中仍然有效,但在浏览器中不起作用。是的,每当测试时,我都不得不玩转时间,因为在Dreamweaver中滑动要慢得多。