gpt4 book ai didi

Javascript 动画问题

转载 作者:行者123 更新时间:2023-11-28 05:23:43 25 4
gpt4 key购买 nike

我的代码适用于一个网站,当您按下移动按钮时,两个方 block 将移动,如果您按下更改颜色按钮,两个方 block 将交替颜色。这些形状同时执行这些操作。然而,只有一个方 block 可以做到这一点,而另一个方 block 什么也不做……请帮忙?

<!DOCTYPE html>
<html>
<style>
#container {
width: 400px;
height: 400px;
position: relative;
background: CadetBlue;
}
div#animate {
width: 50px;
height: 50px;
position: absolute;
background-color: Maroon;
}
</style>

<style>
#containertwo {
width: 400px;
height: 400px;
position: relative;
background: CadetBlue;
}
div#animatetwo {
width: 50px;
height: 50px;
position: absolute;
left: 350px;
top: 0px;
background-color: Olive;
}
</style>
<body>

<p>
<button onClick="myMove()">Movement</button>
</p>

<p>
<button onClick="button_click()">Change Colour</button>
</p>

<div id ="container">
<div id ="animate"></div>
<div id ="animatetwo"></div>
</div>



<div id="box" onClick="button_click();"></div>
<script>
var colors = ["Maroon","Olive"];
function button_click() {
var box = document.getElementById("animate");
var background_color = box.style.backgroundColor;
var i = colors.indexOf(background_color);
if (i === colors.length-1) {
i = -1;
}
animate.style.backgroundColor = colors[i+1];
}
</script>

<div id="box" onClick="myMove();"></div>
<script>
function myMove() {
var elem = document.getElementById("animate");
var pos = 0;
var id = setInterval(frame, 1);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos++;
elem.style.top = pos + 'px';
elem.style.left = pos + 'px';
}
}
}
</script>

<div id="box" onClick="button_click();"></div>
<script>
var colorstwo = ["Maroon","Olive"];
function button_clicktwo() {
var box = document.getElementById("animatetwo");
var background_color = box.style.backgroundColor;
var i = colorstwo.indexOf(background_color);
if (i === colorstwo.length-1) {
i = -1;
}
animatetwo.style.backgroundColor = colorstwo[i+1];
}
</script>



<div id="box" onClick="myMove();"></div>
<script>
function myMovetwo() {
var elem = document.getElementById("animatetwo");
var pos = 0;
var id = setInterval(frame, 1);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos++;
elem.style.top = pos + 'px';
elem.style.left = pos + 'px';
}
}
}
</script>

</body>
</html>

最佳答案

好的...我先谈谈您遇到的问题,然后我会尝试给您一些建议。

1) 首先,单击“移动”按钮后,您仅调用 myMove()函数只负责移动 animated div,当您选择它时:

var elem = document.getElementById("animate");

因此,如果您想同时移动两者,请确保您激活了正确的功能,因为我想您想调用 myMovetwo()同时也许你可以这样做:

function move() {
myMove();
myMovetwo();
}

这样你就可以打电话 move()并且两个调用都会运行。

2) 现在关于您的代码,您应该真正考虑隔离页面的不同方面,我的意思是隔离 CSS、HTML 和 JavaScript,您可以使用 <link> 来做到这一点标签导入您的样式和 <script src="path"></script>标记以包含您的 JavaScript 代码。

另一个建议是删除 onclick从你的 html 标签中获取点击事件并从你的 javascript 代码中获取点击事件。

有一些很好的资源可以学习这些基础概念,也许 Codecademy 对于初学者来说是一个很好的资源 https://www.codecademy.com/courses/html-javascript-css/0/1

干杯!

关于Javascript 动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332782/

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