其实,我这个办法是最土的了,网上也好,DHTML中也好,都有很多取div宽度的方法,最常见的几个 clientWidth,scrollWidth。还有很多,估计DHTML里面介绍的很详细,可是大家会发现,如果你的div是动态的生成的或者div里面的内容是动态生成的,而对于div的属性来讲,都是取你设定好的值,如果你没有设置,也无法取到。比如:<div id=ceng1></div>
<
script language
=
'
javascript
'
>
function createCeng() ... {
var st = "<table ><tr><td>,</td>.....</tr>.....</table>.....";
document.getElementById("ceng1").innerHtml = st;
}
</ script >
function createCeng() ... {
var st = "<table ><tr><td>,</td>.....</tr>.....</table>.....";
document.getElementById("ceng1").innerHtml = st;
}
</ script >
上面的代码你要是取他的宽度,一直是0。所以我直接去每个<td>的内容,(好在我的<td>个数固定)
我用了一个方法取得字符串的宽度
function
getDataLength(st)
...
{
var lenPerByte = 6;//css中定义了字大小为12px
var len = 0;
if(st == null || st == "") ...{
return 0;
}
for(int x = 0; i< st.length;i++) ...{
if(st.charCodeAt(i) <0 || st.charCodeAt(i) >255)//汉字 {
len = len + 2;
}
else ...{
len = len + 1
}
}
return len;
}
var lenPerByte = 6;//css中定义了字大小为12px
var len = 0;
if(st == null || st == "") ...{
return 0;
}
for(int x = 0; i< st.length;i++) ...{
if(st.charCodeAt(i) <0 || st.charCodeAt(i) >255)//汉字 {
len = len + 2;
}
else ...{
len = len + 1
}
}
return len;
}
这个方法也不是很准确,不过可以求<td>的宽度了(根据字符串长短自适应),然后找出最大的td,加上对应的边的宽度,基本上就差不多了,多测几次,就可以找一个差不多的值了。另外由于字母要比数字的宽一些,但是没关系,肉眼看不出来。这个方法不是很好,希望有高手再指导一下