div旋转,点击按钮点击一下所有的div都移动一格,为什么我写的代码只能点击一次,再点击就没有效果了?
代码如下:$(function(){varxx=$(".div1").width()/2;varyy=$(".div1").height()/2;varradius=25...
代码如下:$(function(){ var xx=$(".div1").width()/2; var yy=$(".div1").height()/2; var radius=250; var start=0; var jiaodu=360/$(".img").length; var nn=1; var str=[]; var hudu=jiaodu*Math.PI/180; $(".img").each(function(i,ele){ $(this).css({ "left":Math.sin((hudu*i))*radius+xx, "top":Math.cos((hudu*i))*radius+yy }); }) $(".shang").click(function(){ $(".img").each(function(i,ele){ $(this).css({ "left":Math.sin((hudu*(i+1)))*radius+xx, "top":Math.cos((hudu*(i+1)))*radius+yy }); }) })
展开
3个回答
展开全部
只有i是变量 其他设置的都是常量, 并且i每次循环只都是固定10个数, 所以算下来你给每个img修改的css都是一样的
那么假设一开始你的其中一个img的left为0, 你点击后赋值为10px, 那么你的img向右10px, 再点击赋值的还是10px, 但是你的img已经在10px的位置了 所以不动了,如果你赋值的是20px,即你当前img的left+10px, 那么他才会从10px的位置移动到20px的位置, 移动10个像素点
修改建议
红色箭头那相应加上当前img的对应的left和top
注: 当前img的对应的left和top的查询, 必须写在黄色箭头内, 这样每次点击都会重新查询, 写在外面就只会在页面加载的时候查询一次了
更多追问追答
追问
你好,您说的当前img的对应的left和top怎么获取呢?
我在想是不是我写的代码:
"left":Math.sin((hudu*(i+1)))*radius+xx,里面的(hudu*(i+1),是不是需要加个循环啊?因为我想做的是10个div组成的圆,没点击一次,这10个圆就转360/10度,二我写的里面只能点击一次,不能在点击,是不是缺个循环?
追答
展开全部
因为角度是一个定值,所以弧度是一个定值,所以left,top都是定值。
更多追问追答
追问
你好,能说的具体一点吗?
追答
你设置的角度是一个定值啊,没变,之后怎么让其他元素变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$(function(){
var xx=$(".div1").width()/2;
var yy=$(".div1").height()/2;
var radius=250;
var start=0;
var jiaodu=360/$(".img").length;
var nn=1;
var str=[];
var hudu=jiaodu*Math.PI/180;
$(".img").each(function(i,ele){
$(ele).css({
"left":Math.sin(hudu*i)*radius+xx,
"top":Math.cos(hudu*i)*radius+yy
});
});
$(".shang").click(function(){
$(".img").each(function(i,ele){
$(ele).css({
"left":Math.sin(hudu*(nn+i))*radius+xx,
"top":Math.cos(hudu*(nn+i))*radius+yy
});
});
nn=(nn+1)%$(".img").length;
});
});
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询