我正在制作一些代码,以便在网页上的光标周围加一个圆圈,但我无法获得' div'遵循我想要的道路;事实上,该对象根本没有移动,我无法弄清楚为什么我的代码不起作用。这段代码给我带来了麻烦,因为我已经缩小了范围:
<!DOCTYPE HTML>
<head>
<title>TEST SPACE</title>
<script src="jquery-1.10.2.min.js"></script>
</head>
<body>
<div id="test"></div>
<style>
#test {
background-color: black;
height: 10px;
width: 10px;
border-radius: 100%;
position: absolute;
top: 50%;
left: 50%;
}
</style>
<script>
const omega = Math.PI / 2000;
function dotRotation() {
var time = 0;
var x = 20*(Math.sin(omega*time));
var y = 20*(Math.cos(omega*time));
document.getElementById("test").style.marginLeft = x;
document.getElementById("test").style.marginTop = y;
time += 25;
};
$(document).ready(function() {
setInterval('dotRotation()',25);
});
</script>
</body>
答案 0 :(得分:1)
有两件事是错的
time
变量移出函数+'px'
.marginTop = y + 'px';
醇>
所以完全
const omega = Math.PI / 2000;
var time = 0;
function dotRotation() {
var x = 20*(Math.sin(omega*time));
var y = 20*(Math.cos(omega*time));
var style = document.getElementById("test").style;
style.marginLeft = x +'px';
style.marginTop = y +'px';
time += 25;
};
演示
此外,您可以缓存对dom的引用以避免搜索
答案 1 :(得分:0)
你的小提琴设置为运行onload,它应设置为在头部运行。 [在jQuery选择下左下方。]
time
在函数内部声明,因此每次调用它时都会重置为零。将其移至dotRotation
var time = 0;
function dotRotation() {
var x = 20*(Math.sin(omega*time));
var y = 20*(Math.cos(omega*time));
$("#test").css({"marginLeft" : x + "px", "marginTop" : y + "px"});
time += 25;
};
$(function() {
setInterval(dotRotation,25);
});