大家帮偶优化一下,最好能在3秒内显示出来,谢谢! 偶的目的就是要让所有的INPUT宽度自适应它所在的TD的宽度,用这种方式太慢了,一下子想不到好的办法了,各位帮忙看下有没有更好的方法,最好能在3秒内显示出来1000行,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 .INPUTA {width:100%}<input class=INPUTA > 孟大,偶是想让IPUNT的宽度跟它所在的TD的宽度一致,如果INPUT里边没有内容用WIDTH:100%会有用,你帮忙看一下我贴的代码吧,INPUT里有值,如果用100%的话会撑开的,不行的。 不用INPUT 直接在TD里面写,value 改成innerHTML 偶做成INPUT自然是有用的哦,用户需要输入数据的,大家帮忙看看,谢谢! 自适应宽度在style里面定义不就可以了么。 document.write("<input type=\"text\" id=\"dgip\" name=\"ip1\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); kevin_gao(困了!累了!睡觉了!) ,用style="width:100%"不行的,input里边的值有多长它的WIDTH就会多长,如果比TD的WIDTH小的话是可以,如果多过TD的WIDTH就会撑开了。你可以把那些代码C&P过去试下!谢谢。 主要时间花在“把这个一千行的table显示出来”,这个时间不能省,其它的时间倒时要吧省一些。<form><script language="javascript"> var d = 100; var tempTableInnerHtmlStr=new Array(); var tempArrayLength=0; tempTableInnerHtmlStr[tempArrayLength++]="<table width=\"100%\" border=\"1\" id=aaaa>"; for(i=1;i<d;i++) { tempTableInnerHtmlStr[tempArrayLength++]="<tr>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td1\" width=50% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td2\" width=20% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td3\" width=30% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<\/tr>"; } tempTableInnerHtmlStr[tempArrayLength++]="</table>" alert(1); document.write(tempTableInnerHtmlStr.join(''));</script></form><script>alert(2)var ip1Array=document.getElementsByName('ip1');var ip2Array=document.getElementsByName('ip2');var ip3Array=document.getElementsByName('ip3');var tempWidth1=aaaa.rows[0].cells[0].offsetWidth-4 + 'px'var tempWidth2=aaaa.rows[0].cells[1].offsetWidth-4 + 'px'var tempWidth3=aaaa.rows[0].cells[2].offsetWidth-4 + 'px'for(i=0;i<ip1Array.length;i++){ ip1Array[i].style.width = tempWidth1; ip2Array[i].style.width = tempWidth2; ip3Array[i].style.width = tempWidth3;}alert(3)</script> input里的默认数值先不加不行吗?反正按你现在的脚本也要遍历一遍,在上面加上%100,把下面的脚本改下,循环负值,这样我想不会撑开吧?没试过,我去试下,一会回来看 <html><head></head><body><form><table width="100%" border="1" id="tb1"></table></form></body><script> var objTB = document.getElementById("tb1"); var row; var cell; var tbody = objTB.childNodes[0]; objTB.appendChild( tbody ); for (var i=0; i<100; i++) { row = document.createElement( "TR" ); tbody.appendChild( row ); for (var j=0; j<3; j++) { cell = document.createElement( "TD" ); switch(j){ case 0: cell.id = "td1" ; cell.width = "50%" ; cell.innerHTML = "<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; break; case 1: cell.id = "td2" ; cell.width = "20%" ; cell.innerHTML = "<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">" ; break; case 2: cell.id = "td3" ; cell.width = "30%" ; cell.innerHTML = "<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">" ; break; } row.appendChild( cell ); } } </script><script>var p = new Array(document.getElementsByTagName('INPUT').length);for(i=0;i<p.length;i++){ document.getElementsByTagName('INPUT')[i].style.width = document.getElementsByTagName('INPUT')[i].parentElement.offsetWidth-4 + 'px';}</script></html>剩下的你自己來試試看。 晕,我那方法不行,后给值也是那么宽,但是我发现大家思路被带复杂了根本不用javascript,试下下面的<style></style><form><table border="1" id="table1"><script language="javascript"> var d = 1000; for(i=1;i<d;i++) { document.write("<tr>"); document.write("<td id=\"td1\" width=\"100px\">"); document.write("<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); document.write("<\/td>"); document.write("<td id=\"td2\" width=\"100px\">"); document.write("<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); document.write("<\/td>"); document.write("<td id=\"td3\" width=\"100px\">"); document.write("<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); document.write("<\/td>"); document.write("<\/tr>"); }</script></table></form> 你在调下宽度<form><table border="1" id="table1"><script language="javascript"> var d = 1000; for(i=1;i<d;i++) { document.write("<tr>"); document.write("<td id=\"td1\" width=\"500px\">"); document.write("<input style=\"width:500px\" type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); document.write("<\/td>"); document.write("<td style=\"width:200px\"id=\"td2\" width=\"200px\">"); document.write("<input style=\"width:200px\" type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); document.write("<\/td>"); document.write("<td id=\"td3\" width=\"300px\">"); document.write("<input style=\"width:300px\" type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"); document.write("<\/td>"); document.write("<\/tr>"); }</script></table></form> fantiny你的稍微改一下也可以,不过只使用于已知固定宽度的情况。 var d = 1000; var s = ""; for(i=1;i<d;i++) { s += ".........<\/td><\/tr>"; } document.write(s);用这种方式应该是比较快的一种方式,一般 1.5 秒可以完成这一步 tbody.appendChilddocument.createElement这种模式可能是最慢的一种 JK 的数组join()是最快的一种解决方式了,第一步 0.25 秒,第二步 4 秒 偶觉得要是能不用通过指定Name也能达到那么快就好了,可能真的鱼和熊掌不能兼得! 在JK的基础上再优化一下,不用 name:<form><script language="javascript">document.write(new Date().getTime() +"<br>"); var d = 1000; var tempTableInnerHtmlStr=new Array(); var tempArrayLength=0; tempTableInnerHtmlStr[tempArrayLength++]="<table width=\"100%\" border=\"1\" id=aaaa>"; for(i=1;i<d;i++) { tempTableInnerHtmlStr[tempArrayLength++]="<tr>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td1\" width=50% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td2\" width=20% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td3\" width=30% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<\/tr>"; } tempTableInnerHtmlStr[tempArrayLength++]="</table>" //alert(1); document.write(tempTableInnerHtmlStr.join(''));document.write(new Date().getTime() +"<br>");</script></form><script>//alert(2)var tempWidth1=aaaa.rows[0].cells[0].offsetWidth-4 + 'px';var tempWidth2=aaaa.rows[0].cells[1].offsetWidth-4 + 'px';var tempWidth3=aaaa.rows[0].cells[2].offsetWidth-4 + 'px';var trs = aaaa.getElementsByTagName("TR");for(i=0;i<trs.length;i++){trs[i].cells[0].childNodes[0].style.width = tempWidth1;trs[i].cells[1].childNodes[0].style.width = tempWidth2;trs[i].cells[2].childNodes[0].style.width = tempWidth3;}document.write(new Date().getTime() +"<br>");//alert(3)</script> 我的这个按JK的方式改了<form><script language="javascript"> var d = 20; var str=new Array(); Strlength=0; str[Strlength++]="<table width=\"100%\" border=\"1\" id=\"table1\" >"; for(i=1;i<d;i++) { str[Strlength++]="<tr>"; str[Strlength++]="<td id=\"td1\" width=\"450px\">"; str[Strlength++]="<input style=\"width:454px\" type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; str[Strlength++]="<\/td>"; str[Strlength++]="<td style=\"width:200px\"id=\"td2\" width=\"200px\">"; str[Strlength++]="<input style=\"width:204px\" type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; str[Strlength++]="<\/td>"; str[Strlength++]="<td id=\"td3\" width=\"300px\">"; str[Strlength++]="<input style=\"width:304px\" type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; str[Strlength++]="<\/td>"; str[Strlength++]="<\/tr>"; } str[Strlength++]="</table>"; document.write(str.join(''));</script></form> 梅大的差不多了,终于松了口气,呼!!!小小的改了下,不固定表格列:var tds = aaaa.rows[0].cells.length;for(d=0;d<tds;d++){ var tempWidth = aaaa.rows[0].cells[d].offsetWidth-4 + 'px'; var trs = aaaa.getElementsByTagName("TR"); for(i=0;i<trs.length;i++) { trs[i].cells[d].childNodes[0].style.width = tempWidth; }} 不要呼了,你在 for 里再套用 for 效率有折扣的,且 for 里的语句越少越好,所以 tempWidth 还是放到循环外面吧。 哦?那整个过程如何实现呢?好象一定要有个for的哦。 var tds = aaaa.rows[0].cells.length;var tdw = [];for(var i=0; i<tds; i++){ tdw[tdw.length] = aaaa.rows[0].cells[i].offsetWidth - 4;}var trs = aaaa.getElementsByTagName("TR");for(var i=0; i<trs.length; i++){ for(var d=0; d<tds; d++) { trs[i].cells[d].childNodes[0].style.width = tdw[d]; }} 用这一种吧,估计是最快的了,table 的:style="table-layout:fixed"配合input 的 style="width:100%"也同样能满足楼主的要求<form><script language="javascript"> document.write(new Date()+"<br>"); var d = 100; var tempTableInnerHtmlStr=new Array(); var tempArrayLength=0; tempTableInnerHtmlStr[tempArrayLength++]="<table width=\"100%\" border=\"1\" id=aaaa STYLE=\"table-layout:fixed\">"; for(i=1;i<d;i++) { tempTableInnerHtmlStr[tempArrayLength++]="<tr>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td1\" width=50% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip1\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td2\" width=20% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip2\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td3\" width=30% >"; tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip3\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">"; tempTableInnerHtmlStr[tempArrayLength++]="<\/td>"; tempTableInnerHtmlStr[tempArrayLength++]="<\/tr>"; } tempTableInnerHtmlStr[tempArrayLength++]="</table>" document.write(new Date()+"<br>"); document.write(tempTableInnerHtmlStr.join('')); </script></form> 这样太强了,怎么你知道哪个样式的?景仰ing... ^_^ fantiny(虽然我是菜鸟,不过我是~~非暴力不合作~~的菜鸟) 的方法,效率很低,100行的时候看起来很快,改成1000行,运行了大约2分钟,而且,CPU达到了100%,不可取。试试下面的方法。 firefox下动态添加mouseover事件无效 JS加载图片的问题 关于循环的问题 网页跨域访问框架问题 如果把通过request获取的用户加密后传给另一个action javascript警告窗口 如何取得中文输入的真实长度? 如何用JAVASCRIPT或VBSCRIPT生成一个socket连接 如何取道当前页面的宽度? 求个JavaScript权威教材 系统时间影响了eclipse的编译和更新 100分求助:下来菜单被挡住了
这个时间不能省,
其它的时间倒时要吧省一些。
<form>
<script language="javascript">
var d = 100;
var tempTableInnerHtmlStr=new Array();
var tempArrayLength=0;
tempTableInnerHtmlStr[tempArrayLength++]="<table width=\"100%\" border=\"1\" id=aaaa>"; for(i=1;i<d;i++)
{
tempTableInnerHtmlStr[tempArrayLength++]="<tr>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td1\" width=50% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td2\" width=20% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td3\" width=30% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<\/tr>";
}
tempTableInnerHtmlStr[tempArrayLength++]="</table>"
alert(1);
document.write(tempTableInnerHtmlStr.join(''));
</script>
</form>
<script>
alert(2)
var ip1Array=document.getElementsByName('ip1');
var ip2Array=document.getElementsByName('ip2');
var ip3Array=document.getElementsByName('ip3');
var tempWidth1=aaaa.rows[0].cells[0].offsetWidth-4 + 'px'
var tempWidth2=aaaa.rows[0].cells[1].offsetWidth-4 + 'px'
var tempWidth3=aaaa.rows[0].cells[2].offsetWidth-4 + 'px'for(i=0;i<ip1Array.length;i++){
ip1Array[i].style.width = tempWidth1;
ip2Array[i].style.width = tempWidth2;
ip3Array[i].style.width = tempWidth3;
}
alert(3)
</script>
反正按你现在的脚本也要遍历一遍,在上面加上%100,把下面的脚本改下,循环负值,这样我想不会撑开吧?没试过,我去试下,一会回来看
<head>
</head>
<body>
<form>
<table width="100%" border="1" id="tb1">
</table>
</form>
</body>
<script>
var objTB = document.getElementById("tb1");
var row;
var cell;
var tbody = objTB.childNodes[0];
objTB.appendChild( tbody );
for (var i=0; i<100; i++) {
row = document.createElement( "TR" );
tbody.appendChild( row );
for (var j=0; j<3; j++) {
cell = document.createElement( "TD" );
switch(j){
case 0:
cell.id = "td1" ;
cell.width = "50%" ;
cell.innerHTML = "<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
break;
case 1:
cell.id = "td2" ;
cell.width = "20%" ;
cell.innerHTML = "<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">" ;
break;
case 2:
cell.id = "td3" ;
cell.width = "30%" ;
cell.innerHTML = "<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">" ;
break;
}
row.appendChild( cell );
}
}
</script>
<script>
var p = new Array(document.getElementsByTagName('INPUT').length);
for(i=0;i<p.length;i++){
document.getElementsByTagName('INPUT')[i].style.width = document.getElementsByTagName('INPUT')[i].parentElement.offsetWidth-4 + 'px';
}
</script></html>剩下的你自己來試試看。
根本不用javascript,试下下面的
<style></style>
<form>
<table border="1" id="table1">
<script language="javascript">
var d = 1000;
for(i=1;i<d;i++)
{
document.write("<tr>");
document.write("<td id=\"td1\" width=\"100px\">");
document.write("<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">");
document.write("<\/td>");
document.write("<td id=\"td2\" width=\"100px\">");
document.write("<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">");
document.write("<\/td>");
document.write("<td id=\"td3\" width=\"100px\">");
document.write("<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">");
document.write("<\/td>");
document.write("<\/tr>");
}
</script>
</table>
</form>
<form>
<table border="1" id="table1">
<script language="javascript">
var d = 1000;
for(i=1;i<d;i++)
{
document.write("<tr>");
document.write("<td id=\"td1\" width=\"500px\">");
document.write("<input style=\"width:500px\" type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">");
document.write("<\/td>");
document.write("<td style=\"width:200px\"id=\"td2\" width=\"200px\">");
document.write("<input style=\"width:200px\" type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">");
document.write("<\/td>");
document.write("<td id=\"td3\" width=\"300px\">");
document.write("<input style=\"width:300px\" type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">");
document.write("<\/td>");
document.write("<\/tr>");
}
</script>
</table>
</form>
var s = "";
for(i=1;i<d;i++)
{
s += ".........<\/td><\/tr>";
}
document.write(s);用这种方式应该是比较快的一种方式,一般 1.5 秒可以完成这一步
document.createElement
这种模式可能是最慢的一种
<script language="javascript">
document.write(new Date().getTime() +"<br>");
var d = 1000;
var tempTableInnerHtmlStr=new Array();
var tempArrayLength=0;
tempTableInnerHtmlStr[tempArrayLength++]="<table width=\"100%\" border=\"1\" id=aaaa>"; for(i=1;i<d;i++)
{
tempTableInnerHtmlStr[tempArrayLength++]="<tr>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td1\" width=50% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td2\" width=20% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td3\" width=30% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<\/tr>";
}
tempTableInnerHtmlStr[tempArrayLength++]="</table>"
//alert(1);
document.write(tempTableInnerHtmlStr.join(''));
document.write(new Date().getTime() +"<br>");
</script>
</form>
<script>
//alert(2)
var tempWidth1=aaaa.rows[0].cells[0].offsetWidth-4 + 'px';
var tempWidth2=aaaa.rows[0].cells[1].offsetWidth-4 + 'px';
var tempWidth3=aaaa.rows[0].cells[2].offsetWidth-4 + 'px';
var trs = aaaa.getElementsByTagName("TR");for(i=0;i<trs.length;i++){
trs[i].cells[0].childNodes[0].style.width = tempWidth1;
trs[i].cells[1].childNodes[0].style.width = tempWidth2;
trs[i].cells[2].childNodes[0].style.width = tempWidth3;
}
document.write(new Date().getTime() +"<br>");
//alert(3)
</script>
<form>
<script language="javascript">
var d = 20;
var str=new Array();
Strlength=0;
str[Strlength++]="<table width=\"100%\" border=\"1\" id=\"table1\" >";
for(i=1;i<d;i++)
{
str[Strlength++]="<tr>";
str[Strlength++]="<td id=\"td1\" width=\"450px\">";
str[Strlength++]="<input style=\"width:454px\" type=\"text\" id=\"dgip\" name=\"ip1\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
str[Strlength++]="<\/td>";
str[Strlength++]="<td style=\"width:200px\"id=\"td2\" width=\"200px\">";
str[Strlength++]="<input style=\"width:204px\" type=\"text\" id=\"dgip\" name=\"ip2\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
str[Strlength++]="<\/td>";
str[Strlength++]="<td id=\"td3\" width=\"300px\">";
str[Strlength++]="<input style=\"width:304px\" type=\"text\" id=\"dgip\" name=\"ip3\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
str[Strlength++]="<\/td>";
str[Strlength++]="<\/tr>";
}
str[Strlength++]="</table>";
document.write(str.join(''));
</script>
</form>
小小的改了下,不固定表格列:
var tds = aaaa.rows[0].cells.length;
for(d=0;d<tds;d++){
var tempWidth = aaaa.rows[0].cells[d].offsetWidth-4 + 'px';
var trs = aaaa.getElementsByTagName("TR");
for(i=0;i<trs.length;i++)
{
trs[i].cells[d].childNodes[0].style.width = tempWidth;
}
}
var tdw = [];
for(var i=0; i<tds; i++)
{
tdw[tdw.length] = aaaa.rows[0].cells[i].offsetWidth - 4;
}var trs = aaaa.getElementsByTagName("TR");
for(var i=0; i<trs.length; i++)
{
for(var d=0; d<tds; d++)
{
trs[i].cells[d].childNodes[0].style.width = tdw[d];
}
}
table 的:style="table-layout:fixed"
配合input 的 style="width:100%"
也同样能满足楼主的要求
<form>
<script language="javascript">
document.write(new Date()+"<br>");
var d = 100;
var tempTableInnerHtmlStr=new Array();
var tempArrayLength=0;
tempTableInnerHtmlStr[tempArrayLength++]="<table width=\"100%\" border=\"1\" id=aaaa STYLE=\"table-layout:fixed\">"; for(i=1;i<d;i++)
{
tempTableInnerHtmlStr[tempArrayLength++]="<tr>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td1\" width=50% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip1\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td2\" width=20% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip2\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<td id=\"td3\" width=30% >";
tempTableInnerHtmlStr[tempArrayLength++]="<input type=\"text\" id=\"dgip\" name=\"ip3\" style=\"width:100%\" value=\"aljshldfkjhqdkasdfasahsldkjfhlkajsdhlkfjahlksdjfhklajsdhlkfjahlksdjfladfqwerqwzxcvqwefj\">";
tempTableInnerHtmlStr[tempArrayLength++]="<\/td>";
tempTableInnerHtmlStr[tempArrayLength++]="<\/tr>";
}
tempTableInnerHtmlStr[tempArrayLength++]="</table>"
document.write(new Date()+"<br>");
document.write(tempTableInnerHtmlStr.join(''));
</script>
</form>