gpt4 book ai didi

Javascript 动画无法正常运行

转载 作者:行者123 更新时间:2023-11-28 08:29:21 25 4
gpt4 key购买 nike

我为“卷轴”制作了这个脚本,它应该在单击向上或向下箭头时向上或向下移动。但是,我有两个问题:

1)向上箭头将其向下移动,向下箭头将其向上移动
2)一旦我无法再次执行它,它执行后,我收到一个错误,说它无法解析“top”。

知道为什么会发生这种情况吗?我粘贴了下面的所有代码。它不漂亮,但它应有尽有。

<!doctype html>

<html>

<head>
<meta charset="utf-8">
<title>Tales of the Hartland: Homepage</title>

<style type="text/css">

/* ID DEFINITIONS */

#reelHolder {
height: 750px;
width: 800px;
overflow: hidden;
border: 1px solid gray;
position: relative;
left:50%;
margin-left:-400px;
}

#arrowDown {
z-index:auto;
position:relative;
left:87.4%;
}

#arrowUp {
z-index:auto;
position:relative;
}

#reel {
position: relative;
}

/*CLASS DEFINITIONS */

.banner {
position: relative;
left:50%;
margin-left:-600px;
}

.arrow {
width:50px;
height:50px;
}

.reeler {
width:600px;
height:300px;
position: relative;
left:50%;
margin-left:-300px;
margin-top:50px;
}

.break {
height:0px;
}

.bigBreak {
height:50px;
}

</style>


<script>
//REEL UP
function reelUp(elem) {

elem = document.getElementById(elem);

var down = 0;
var curLoc = elem.style.top;

function frame() {

down++

elem.style.top = down + curLoc + 'px';

if (down == 300)
clearInterval(id);
}

var id = setInterval(frame, 10) // draw every 10ms

}

//REEL DOWN
function reelDown(elem) {

elem = document.getElementById(elem);

var down = 0;
var curLoc = elem.style.top;

function frame() {

down++


elem.style.top = (-1 * down) + curLoc + 'px';

if (down == 300)
clearInterval(id);
}

var id = setInterval(frame, 10) // draw every 10ms

}
</script>

</head>

<body>

<img src="Banner.png" width="1200" height="150" alt="" class="banner"/>

<a id="arrowUp" class="arrow" href="javascript:reelUp('reel')">
<img src="arrowUp.png" alt=""/>
</a>

<a id="arrowDown" class="arrow" href="javascript:reelDown('reel')">
<img src="arrowDown.png" alt=""/>
</a>

<div id="reelHolder" class="centerDiv">


<div id="reel">
<img src="reel1.png" class="reeler" id="reel1"/>
<div class="break"></div>
<img src="reel2.png" class="reeler" id="reel2"/>
</div>



</div>

</body>
</html>

最佳答案

elem.style.top 的较高值会将元素在其容器中进一步向下移动。如果 top10px,则元素的顶部距其容器顶部 10 像素。如果 top100px,则它向下 90 像素。

所以要在 reelUp 中“向上”移动一个元素,减少 top:

elem.style.top = curLoc - down + 'px';

并在 reelDown 中将它的元素“向下”移动,增加 top:

elem.style.top = curLoc + down + 'px';

我没有试过运行你的代码,但在阅读之后我会想象它只工作一次的原因是变量 id 没有在 frame 的范围内定义 功能。如果您在 function frame() 之前声明 var id 那么它应该可以工作。

这些是您具体问题的答案。一旦你控制了这些,我建议将 reelUpreelDown 合并到一个函数中,因为它们在很大程度上是相同的(它们只有一个字符不同:+/-).

关于Javascript 动画无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com