Javascript 为什么在for循环中使用document.getElementById(';';).innerHTML和document.write()的结果不同?
为了澄清Javascript 为什么在for循环中使用document.getElementById(';';).innerHTML和document.write()的结果不同?,javascript,innerhtml,document.write,Javascript,Innerhtml,Document.write,为了澄清document.write(),我知道这已经过时,不想重新加载并关闭网站。因此,我提出了document.getElementById().innerHTML作为替代方案 但是,问题是,document.getElementById().innerHTML不会为我带来我编写的结果,但是document.write()会 那么,如何使用document.write()开发document.getElementById().innerHTML代码呢 我一直在寻找.write和.innerH
document.write()
,我知道这已经过时,不想重新加载并关闭网站。因此,我提出了document.getElementById().innerHTML
作为替代方案
但是,问题是,document.getElementById().innerHTML
不会为我带来我编写的结果,但是document.write()
会
那么,如何使用document.write()
开发document.getElementById().innerHTML
代码呢
我一直在寻找.write
和.innerHTML
之间的差异,但是,您能通过我带来的示例帮助我理解它们之间的显著差异吗
这是代码
var arrlist=[“阿隆”、“比尔”、“卡米尔”、“丹尼”、“厄林”、“菲奥拉”、“吉布森”];
var a=arrlist.length;
var b=3;
var c=3;
函数x(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
document.getElementById('listshow').innerHTML=“+c+”第四个名称列表“+k+”第三个“+arrlist[x]+”;
}
}
}
函数y(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
}
文件。写(“+c+”第个名称列表“+k+”第“+arrlist[x]+”);
}
}
document.getElementById().innerHTML
document.write()
原因很简单,因为使用innerHTML,您将替换元素的内容,而不是向元素添加内容!因此,每次循环迭代时,它只会用最后一次迭代替换上一次迭代中的所有html
var arrlist=[“阿隆”、“比尔”、“卡米尔”、“丹尼”、“厄林”、“菲奥拉”、“吉布森”];
var a=arrlist.length;
var b=3;
var c=3;
函数x(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
}
document.getElementById('listshow').innerHTML=document.getElementById('listshow').innerHTML++++“c++”第四个名称列表“+k++“第三个”+arrlist[x]+”;
}
}
函数y(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
}
文件。写(“+c+”第个名称列表“+k+”第“+arrlist[x]+”);
}
}
document.getElementById().innerHTML
document.write()
原因很简单,因为使用innerHTML,您将替换元素的内容,而不是向元素添加内容!因此,每次循环迭代时,它只会用最后一次迭代替换上一次迭代中的所有html
var arrlist=[“阿隆”、“比尔”、“卡米尔”、“丹尼”、“厄林”、“菲奥拉”、“吉布森”];
var a=arrlist.length;
var b=3;
var c=3;
函数x(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
}
document.getElementById('listshow').innerHTML=document.getElementById('listshow').innerHTML++++“c++”第四个名称列表“+k++“第三个”+arrlist[x]+”;
}
}
函数y(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
}
文件。写(“+c+”第个名称列表“+k+”第“+arrlist[x]+”);
}
}
document.getElementById().innerHTML
document.write()
document.write()在文档中添加一些文本/html
innerHTML是节点的完整内容。因此,分配它将替换内容。
这应该起作用:
document.getElementById('listshow').innerHTML += "<table border='1' width='200px'><thead><tr><th colspan='2'>" +c+ "th list of names</th></tr></thead> <tbody><tr><th width='30%'>" +k+ "th</th><td width='70%' >"+arrlist[x]+ "</td></tr></tbody></table>";
document.getElementById('listshow').innerHTML++=“c+”第个名称列表“+k+”第“+arrlist[x]+”;
请注意“+=”文档。write()在文档中添加了一些文本/html
innerHTML是节点的完整内容。因此,分配它将替换内容。
这应该起作用:
document.getElementById('listshow').innerHTML += "<table border='1' width='200px'><thead><tr><th colspan='2'>" +c+ "th list of names</th></tr></thead> <tbody><tr><th width='30%'>" +k+ "th</th><td width='70%' >"+arrlist[x]+ "</td></tr></tbody></table>";
document.getElementById('listshow').innerHTML++=“c+”第个名称列表“+k+”第“+arrlist[x]+”;
请注意“+=”1。该语句位于不同的位置。
,则代码>在内部.innerHTML=/**/如果(b*(c-1)+i>=a)
,因此它只会有条件地执行
在document.write(/*…*/)
,那么它将执行三次之外,如果(b*(c-1)+i>=a)
将在每次调用时更改节点的内容,而不是添加到其中.innerHTML=/**/
将重复写入同一文档文档。写入(/*…*/)
document.write()
一个实际上更为复杂-document.write()
如果尚未完成,则会执行一个隐式操作,允许写入并清除当前页面:
调用文档。在已关闭(加载)的文档上写入会自动调用文档。打开
此外,在所有写入操作完成后,还有一个隐式的。因此,如果您在循环中重复调用document.write()
,则只有在这些操作完成后才会调用document.close()
,并且您会得到多个写入项
因此,使它们工作相同的一种方法是添加一个显式的document.close()
,它将执行重复覆盖,如设置.innerHTML
:
var arrlist=[“阿隆”、“比尔”、“卡米尔”、“丹尼”、“厄林”、“菲奥拉”、“吉布森”];
var a=arrlist.length;
var b=3;
var c=3;
函数x(){
对于(变量i=0;i=a){
变量x=(b*(c-1)+i)%a;
document.getElementB