在添加带有HTML和Javascript输入的行时重置表输入值
我一直在琢磨为什么我的代码会这样运行 我的问题是,为什么当我使用addRow函数添加一个表行时,它会重置前面行的所有输入值 下面是显示我的问题的代码片段在添加带有HTML和Javascript输入的行时重置表输入值,javascript,jquery,html,html-table,Javascript,Jquery,Html,Html Table,我一直在琢磨为什么我的代码会这样运行 我的问题是,为什么当我使用addRow函数添加一个表行时,它会重置前面行的所有输入值 下面是显示我的问题的代码片段 函数addRow(){ //用于添加行的html(包含行标记和输入) htmlString=''; //将html字符串添加到tableTestSamples的tbody中 document.getElementById(“testTable”).getElementsByTagName(“tbody”)[0]。innerHTML+=html
函数addRow(){
//用于添加行的html(包含行标记和输入)
htmlString='';
//将html字符串添加到tableTestSamples的tbody中
document.getElementById(“testTable”).getElementsByTagName(“tbody”)[0]。innerHTML+=htmlString;
}
问题是您正在修改表的
内部HTML
。这会导致浏览器将表的内容视为HTML字符串,重新分析HTML,然后替换表的内容。由于浏览器不会更新innerHTML
以反映输入标记中输入的值,因此这些值在此过程中将丢失
为了避免重置输入值,您需要操纵DOM,而不是操纵底层源代码。您仍然可以使用HTML创建新行,但需要使用以下函数将其添加到表中:
例如:
函数addRow(){
var行=document.createElement('tr');
row.innerHTML='';
var table=document.getElementById('the-table');
表2.追加子项(行);
}
添加行
问题是您正在修改表的innerHTML
。这会导致浏览器将表的内容视为HTML字符串,重新分析HTML,然后替换表的内容。由于浏览器不会更新innerHTML
以反映输入标记中输入的值,因此这些值在此过程中将丢失
为了避免重置输入值,您需要操纵DOM,而不是操纵底层源代码。您仍然可以使用HTML创建新行,但需要使用以下函数将其添加到表中:
例如:
函数addRow(){
var行=document.createElement('tr');
row.innerHTML='';
var table=document.getElementById('the-table');
表2.追加子项(行);
}
添加行
,这是因为修改元素的innerHTML
会导致它替换所有现有子元素。尝试改用appendChild()
。这是因为修改元素的innerHTML
会导致它替换所有现有的子元素。尝试改用appendChild()
。