js如何改变控件的显示位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js如何改变控件的显示位置相关的知识,希望对你有一定的参考价值。
用了个JS的日历控件,但是控件的显示位置总是在左上角,没办法跟随在输入框的下方,请问是代码出了什么问题吗?可不可以修改其显示位置?如何修改?部分代码如下:
var x,y,intLoop,intWeeks,intDays;
var DivContent;
var year,month,day;
var o=eval("document.all."+InputBox);
var thisyear; //真正的今年年份
thisyear=new getToday();
thisyear=thisyear.year;
today = o.value;
if(isDate(today))
today = new getStringDay(today);
else
today = new getToday();
//显示的位置
x=o.offsetLeft;
y=o.offsetTop;
while(o=o.offsetParent)
x+=o.offsetLeft;
y+=o.offsetTop;
document.all.Calendar.style.left=x+2;
document.all.Calendar.style.top=y+20;
document.all.Calendar.style.visibility="visible";
1、使用js改变控件的style
var elem=document.getElementById("控件id");//获取控件elem.style.position = "absolute";//设置绝对定位(或者相对定位)
elem.style.left = "50px";//设置left数值
elem.style.top = "100px";//设置top数值
2、使用js改变元素的class
写好的style
.newPositionposition:absolute;top:50px;left:100px;改变元素class(可以绑定在某个事件中,或者页面加载完成执行)
elem.className='newPosition';//为空间添加class样式 参考技术A 浏览器容错性问题,试着在后面加上“px”单位:
document.all.Calendar.style.left=x+2 + "px";
document.all.Calendar.style.top=y+20 + "px";追问
实在感谢,就是这个原因,不过百度了style.left和offsetleft不同,知道了style.left的返回值是xxx,offsetleft的返回值是xxx px,所以试着加上px就解决了,就顺手采纳了当时只有一条回答,不好意思,还是十分感谢~
追答你还我采纳率 5555....
还有一般style.left是设置位置,offset.left是取位置
winform窗体在其他电脑上启动控件位置出错
各位大神们,有一个问题,求助啊。我制作的WinForm窗体设计的时候,运行得好好的。但是在拷去其他电脑上面直接启动的时候,控件的位置会错乱,但是如果在那台电脑上重新编译一次(也就是随便按两下某一个控件的属性,也没有改变控件的属性)之后,启动,控件的位置就像在原来电脑上一样很正常。让我百思不得其解。因为这个软件最终要编译成release文件给客户用的,不可能让客户都装VS2013,重新编译吧。~~附图,求大神帮解决这个问题。1:直接启动的时候(不正常):
2:随便按两下某一个控件的属性(没有改变其属性)之后(恢复正常):
对不起了,没有财富值~~~跪求答案,
你没有设置像数大小和位置,所以自动选择了默认属性,在新电脑里随便按两下就选择了新的默认所以又好了。追问
所有想问下你,怎么解决这个问题啊?能不能详细点啊?谢谢啊。
参考技术A 你这个问题没有遇到过啊,你那个控件是动态加载上去的吗?追问不是,是直接拖上去的。
参考技术B 把控件的大小定死吧 如果可能的话把窗体大小也定死并且设置成不能改变大小 参考技术C 你初始化的时候 代码有问题。。 自己好好看下。。追问初始化的时候,我都没有触发窗体LOAD事件。能不能具体一点啊,代码初始化是在哪个部分?我是新手~~事情比较急。谢谢
以上是关于js如何改变控件的显示位置的主要内容,如果未能解决你的问题,请参考以下文章