根据《 JavaScript忍者的秘密》(第二版)一书,决定提高JS的知识水平。
有一个处理电路的示例,kavakami是示例动画。我重写了,但是它不能与浏览器一起使用,也看不到错误。
function animateIt(elementId) {
var elem = document.getElementById(elementId)
var tick = 0
var timer = setInterval(function() {
if (tick < 100) {
elem.style.left = elem.style.top = tick + 'px'
tick++
} else {
clearInterval(timer)
}
}, 10)
}
animateIt('box1')
<div id="box1">First Box</div>
可能是什么问题?
答案 0 :(得分:1)
尝试一下:
function animateIt(elementId) {
var elem = document.getElementById(elementId)
var tick = 0
var timer = setInterval(function() {
if (tick < 100) {
elem.style.position = "absolute";
elem.style.left = elem.style.top = tick + 'px'
tick++
} else {
clearInterval(timer)
}
}, 10)
}
animateIt('box1')
答案 1 :(得分:0)
尝试以下
div
默认情况下,position: static
具有left
,这会导致top
或{{1}}样式属性不影响该元素。
答案 2 :(得分:0)
/* Unchanged JS */ function animateIt(t){var e=document.getElementById(t),n=0,a=setInterval(function(){n<100?(e.style.left=e.style.top=n+"px",n++):clearInterval(a)},10)}animateIt("box1");
/*
* For the `top` and `left` property to work, your element needs
* to have a `position: relative` or `absolute` or `fixed`
*/
#box1 { position: relative; }
<!-- Unchanged HTML --> <div id="box1">First Box</div>
此处有更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/top
答案 3 :(得分:0)
您的示例运行良好,但是要使div移动,您需要设置其样式位置。
在这种情况下,我将其设置为realtive并且未更改代码中的任何内容
function animateIt(elementId) {
var elem = document.getElementById(elementId)
var tick = 0
var timer = setInterval(function() {
if (tick < 100) {
elem.style.left = elem.style.top = tick + 'px'
tick++
} else {
clearInterval(timer)
}
}, 10)
}
animateIt('box1')
div{
position:relative;
}
<div id="box1">First Box</div>