日期:2014-05-16  浏览次数:20568 次

小问题,高手们帮忙解决一下。。
描述如下,,请高手帮忙解决一下,谢谢!!

/**功能:实现一个动态的变化表格功能
问题:主要出现这一行setTimeout("outprint("+nroot+")",1000); ,实现一秒间隔的调用**/

<HTML>
<BODY>
<script>
//var inroot=prompt("the sqrt of n:",100); // 边长
//var nroot=3;
outprint(3);

function outprint(nroot)
{
   
nr=nroot;
var nc=nroot;
var n=nroot*nroot;
var pxsize=Math.floor(420/nroot);
 
document.write('<table border=0 cellpadding=0 cellspacing=0 width=' + pxsize*nc + ' height=' + pxsize*nr + '>' );
var np=0;

for(ir=0;ir<nr;ir++) //ir:行
{
document.write('<tr>\n');
for(ic=0;ic<nc;ic++) //ic:列
{
var j=ir*nc+ic+1;
var bp=fprime(j);
if(bp)
{
np++;
}
var zcolor=bp?"ffc000":"000000";
if(j==1) zcolor="ffff00";
document.write('<td bgcolor=' + zcolor + '></td>\n')
}
document.write('</tr>\n')
}

document.write('</table>');
document.write(n+": "+(np-1) );

nroot++;
if(nroot>=100) nroot=1;
//setTimeout(alert(nroot),1000);
setTimeout("outprint("+nroot+")",1000);
//if(nroot<100) outprint(nroot);
}

function fprime(n)
{
var bp=true;
for(i=2;i<=Math.sqrt(n);i++)
{
if(n%i==0) 
{
bp=false;
break;
}
}
return bp;
}

</script>
</BODY>
</HTML>


------解决方案--------------------
不能用document.write()
------解决方案--------------------
这样的可以构建一个html字符串,然后添加到一个容器元素里面去,每次都更新这个容器元素的innerHTML。

去搜索下资料,document.write如果是在window.onload以后调用,会清空文档只输出write的内容