问题是这样的,页面上我有一组表格紧挨在一起,即他们的float:left;他们的行数是一样的,但是有些行高是不一样的,即他们的tr高度不同,页面很不协调,于是我写了个函数,统一了他们各行的高度,在静态页面我没有显式的写<tr height="20">,只写了<tr>.但是js获取到了tr的高度,并可以修改他的高度。
接着,我把这些表格全部存进了数据库,用的是clob类型,再取出来,写在页面,这时候,表格可以征程显示,但是表格的tr高度获取不到了,他的offsetHeight和clientHeight都可以获取到,但是height却获取不到,对他们进行修改的时候也不成功,比如,我在js里对某一行修改高度,xx.height = 80;这样是修改不了的,但是在静态页面是可以的啊,为什么呢?希望高手们指点一下小弟,谢谢啦
接着,我把这些表格全部存进了数据库,用的是clob类型,再取出来,写在页面,这时候,表格可以征程显示,但是表格的tr高度获取不到了,他的offsetHeight和clientHeight都可以获取到,但是height却获取不到,对他们进行修改的时候也不成功,比如,我在js里对某一行修改高度,xx.height = 80;这样是修改不了的,但是在静态页面是可以的啊,为什么呢?希望高手们指点一下小弟,谢谢啦
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head> <body>
<table border=1>
<tr id="tr1">
<td>123</td>
<td></td>
<td></td>
</tr>
<tr>
<td>321</td>
<td></td>
<td></td>
</tr>
</table>
<script type="text/javascript">
<!--
document.getElementById("tr1").style.height = "80px";
//-->
</script>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<META http-equiv="Content-Style-Type" content="text/css">
</head>
<script language=javascript>
window.onload=function(){
var tb=document.getElementById("tb");
var rows=tb.rows.length;
for(var i=0;i<rows;i++){
tb.rows[i].style.height=30; //在这里修改
}
}
function getHeight(){
var heights=[]
var tb=document.getElementById("tb");
var rows=tb.rows.length;
for(var i=0;i<rows;i++){
heights[i]= parseInt(tb.rows[i].style.height); //在这里修改
}
alert(heights);
}
</script>
<body >
<table id="tb" border=1px gray>
<tr><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td></tr>
<tr><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td></tr>
<tr><td>31</td><td>32</td><td>33</td><td>34</td><td>35</td></tr>
<tr><td>41</td><td>42</td><td>43</td><td>44</td><td>45</td></tr>
<tr><td>51</td><td>52</td><td>53</td><td>54</td><td>55</td></tr>
</table>
<input type="button" value="得到宽度数组" onclick="getHeight()">
</body>
</html>
注意点:一定要在加载完页面以后才能修改或者得到表格宽度
window.onload=function(){
var tbl = document.getElementById("tb");
var n = 0;
var a = tbl.getElementsByTagName("tr");
for(var i=0;i<a.length;i++){
if(a[i].clientHeight>n) n=a[i].clientHeight;
}
for(var i=0;i<a.length;i++){
a[i].style.height = n;
}
}
</script>
<table id="tb" style="float:left">
<tr>
<td>dfsfsfs<br>asdasda<br>ss</td>
</tr>
<tr>
<td>ss</td>
</tr>
<tr>
<td>dfsfsfs<br>asdasda<br>ss</td>
</tr>
</table>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title><style>
table{float:left;border-collapse:collapse;border:#bbb;}
table td{word-break:break-all;height:20px;font-size:13px;border:#bbb;}
</style>
</head>
<body>
<script>
function doTable(){
var pp = document.getElementById("pp");
var d = pp.outerHTML;
//alert(d);
document.body.innerHTML="";
document.write(d);
var tab = document.getElementsByTagName("table");
var index = tab.length;
var rIndex = tab[1].rows.length
var rowArray = new Array(rIndex);
for(var i=0;i<rIndex;i=i+1){
var tdArray = new Array();
for(var j=1;j<index;j=j+1){
tdArray[j-1] = tab.item(j).rows[i].clientHeight;
}
var maxs = tdArray[0];
for(var k=0;k<tdArray.length;k=k+1){
if(maxs<tdArray[k]){
maxs = tdArray[k];
}
rowArray[i] = maxs;
}
}
for(var i=0;i<rIndex;i=i+1){
for(var j=1;j<index;j=j+1){
//tab.item(j).rows[i].offsetHeight = rowArray[i];
//tab.item(j).rows[i].clientHeight = rowArray[i];
//tab.item(j).rows[i].height = rowArray[i];
}
}
}
doTable();</script>
</body>
</html>不需要看那几个table的内容,就是几个行数一样的table ,但是在jsp里,我把这几个table 的内容存进数据库,然后在取出来,
tab.item(j).rows[i].height = rowArray[i];//在这里修改高度
这一行就没效果了,试了下,是因为获取不到height的值,
改成tab.item(j).rows[i].style.height = rowArray[i];//在这里修改高度
这次可以获取style.height的值,可是依旧修改不了,
table td{word-break:break-all;height:20px;font-size:13px;border:#bbb;}
那个height:20px去掉因为如果css类定义了,你要修改高度的话必须修改css类里的,修改页面的没用
支持 3 楼
var cssrules=document.styleSheets[0].cssRules|| document.styleSheets[0].rules;
cssrules[1].style. height=xxx//你自己的height
}
或者直接修改css类看看,前提是你数据库得到的height是有值的
var pp = document.getElementById("pp");
var d = pp.outerHTML;
//alert(d);
document.body.innerHTML="";
document.write(d);
以下代码一切正常
L@_@K
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<style type="text/css">
table {
float:left;
border-collapse:collapse;
border:#bbb;
}
table td {
word-break:break-all;
height:20px;
font-size:13px;
border:#bbb;
}
</style>
</head> <body>
<table border=1>
<tr>
<td>t1</td>
<td>abc</td>
<td>ddd</td>
</tr>
<tr>
<td>321</td>
<td>afdad</td>
<td>afa</td>
</tr>
</table>
<table border=1>
<tr id="tr1">
<td>t2</td>
<td>111</td>
<td>222</td>
</tr>
<tr>
<td>321</td>
<td>333</td>
<td>555</td>
</tr>
</table>
<table border=3>
<tr id="tr1">
<td>t2</td>
<td>111</td>
<td>222</td>
</tr>
<tr>
<td>321</td>
<td>333</td>
<td>555</td>
</tr>
</table>
<script type="text/javascript">
<!--
var tables = document.getElementsByTagName("table");
for (var i=0; i<tables.length; i++)
{
for (var j=0; j<tables[i].rows.length; j++)
{
tables[i].rows[j].style.height = "80px";
}
}
//-->
</script>
</body>
</html>