javaScript改变div的位置

以下是JS代码://JavaScriptDocumentvardiv=document.getElementById("divTest");varbtnLeft=docu... 以下是JS代码:
// JavaScript Document
var div=document.getElementById("divTest");
var btnLeft=document.getElementById("btnLeft");
var btnRight=document.getElementById("btnRight");
var btnShow=document.getElementById("btnShow");
var btnHide=document.getElementById("btnHide");
var moveLeft=function()
{
div.style.left+=50+"px";
};
var moveRight=function()
{
div.style.left-=50+"px";
};
var Show=function()
{
div.style.display="block";
};
var Hide=function()
{
div.style.display="none";
};

//绑定事件和相应的处理程序:
btnLeft.onclick=moveLeft;
btnRight.onclick=moveRight;
btnShow.onclick=Show;
btnHide.onclick=Hide;
---------------------------------------
想问问为什么在页面中点击按钮的时候div只能移动一次呢?再次点击按钮就没用了
展开
 我来答
匿名用户
推荐于2016-09-25
展开全部

参考如下:

<input type="text">
<div id="divShow" style="display:none;position:absolute;">显示的内容;</div>

display:none,表示此层隐藏;
position:absolute,表示此层的为绝对位置,方便后期进行绝对定位

添加事件,完成效果;

<script type="text/javascript">
function showDiv(obj) {
// 保存元素;
var el = obj;
// 获得元素的左升粗偏移量
var left = obj.offsetLeft;
// 获得元素的顶端偏移量;
var top = obj.offsetTop;

// 循环获得元素的父级控件,累加左和顶端偏移量;
while (obj = obj.offsetParent) {
left += obj.offsetLeft;
top += obj.offsetTop;
}

// 设置层的坐标并显示;
document.all.divShow.style.pixelLeft = left;
// 层的顶端距离为元素的顶端距离加上元素的高;
document.all.divShow.style.pixelTop = top + el.offsetHeight; 
document.all.divShow.style.display = "block";
}
</script>
<style>


#divShow 
{
width:150px;
height:180px;
border-width:thin;
background:yellow;
}
</style>
<input type="text" onfocus="showDiv(this);">
<div id="divShow" style="display:none;position:absolute;">显示的内容;</div>

注意:

offsetLeft和OffsetTop不是获得元素和页面的距离,只是获得元素和父元素的的距离,所以要进行while循环一层层累加距离,最后得到元素和页面之间的距离
层次关系:本元素漏薯->父返笑者元素->……>body->null,当为null时,退出while循环。

最终效果如下:

网海1书生
科技发烧友

2014-10-28 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26226

向TA提问 私信TA
展开全部

div.style.left+=50+"px";


div.style.left的起始值是空字符串,那么上述语句第一次运行后变为50px,请注意这是个字符串,并不是数派闷字!因此第二次尘答弯运行时它的值就变为举袭50px50px,这肯定是个无效值。

可修改为:

div.style.left=div.offsetLeft+50+"px";

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我都知道了哦
2014-10-28 · TA获得超过1764个赞
知道小有建树答主
回答量:1019
采纳率:0%
帮助的人:751万
展开全部

var moveLeft=function(){

      div.style.left+=50+"px";
};

以上这段代码之中,问题出肆让磨在标红的“px”上。


比如说:

最初,left坐标是0;

第一裂斗次点击,left坐标变成了50px;

第二滑蚂次点击,left坐标试图变成50px50px,这个值是无效的。

追问
也谢谢你了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式