Javascript 无法理解prepend方法的行为
我用代码创建了一个,下面的代码第一次运行良好,但当我反复创建它们时,即一次又一次,它就不起作用了 函数createTH{ var noOfRow=document.getElementByIdaddItemTable.rows.length; var temp=document.getElementByIdaddItemTable; var table=temp.getElementsByTagName'tbody'[0]; var row=table.insertRow-1; var cell2=row.insertCell0; var cell3=row.insertCell1; cell2.innerHTML=这是在表div中; 单元格2.样式=边框:虚线; cell3.innerHTML=这是在另一个div中; 单元格3.样式=边框:虚线; var thContent=++'测试'+''+'*'+' var mainTable=document.getElementByIdaddItemTable; $'addItemTable>tbody>tr'.prependthContent; }Javascript 无法理解prepend方法的行为,javascript,jquery,html,Javascript,Jquery,Html,我用代码创建了一个,下面的代码第一次运行良好,但当我反复创建它们时,即一次又一次,它就不起作用了 函数createTH{ var noOfRow=document.getElementByIdaddItemTable.rows.length; var temp=document.getElementByIdaddItemTable; var table=temp.getElementsByTagName'tbody'[0]; var row=table.insertRow-1; var cel
问题是因为您将thContent附加到jQuery选择的所有tr中,而不仅仅是新的tr。要修复此问题,请将行更改为仅附加到新行实例:
$(row).prepend(thContent);
但是值得注意的是,您使用的是普通JS和jQuery的奇怪组合。如果您已经在使用jQuery,则可以大大简化代码:
$“添加”。单击“添加”功能{
var rowHtml='test*这是在表div中这是在另一个div中';
$'addItemTable'.appendrowHtml;
};
td{边框:虚线;}
单击一次又一次地创建th问题是因为您将thContent附加到jQuery选择的所有tr,而不仅仅是新tr。要修复此问题,请将行更改为仅附加到新行实例:
$(row).prepend(thContent);
但是值得注意的是,您使用的是普通JS和jQuery的奇怪组合。如果您已经在使用jQuery,则可以大大简化代码:
$“添加”。单击“添加”功能{
var rowHtml='test*这是在表div中这是在另一个div中';
$'addItemTable'.appendrowHtml;
};
td{边框:虚线;}
单击以一次又一次地创建您不断添加到每一行的th 始终如一地使用jQuery,这会有所帮助。同样干燥:不要重复你自己 像这样 const cellStyle={style:边框:虚线;} $addRow.onclick,函数{ const$tb=$additemtbody; 设$newRow=$; $newRow.append'test*'; $newRow.append$,cellStyle.text这是在表格单元格内; $newRow.append$,cellStyle.text这是在另一个表格单元格中; $tb.前置$newRow; }
你一直在增加每一行 始终如一地使用jQuery,这会有所帮助。同样干燥:不要重复你自己 像这样 const cellStyle={style:边框:虚线;} $addRow.onclick,函数{ const$tb=$additemtbody; 设$newRow=$; $newRow.append'test*'; $newRow.append$,cellStyle.text这是在表格单元格内; $newRow.append$,cellStyle.text这是在另一个表格单元格中; $tb.前置$newRow; }
当函数调用时,可以使用行计数器增加行的索引数并在其中追加数据 这是演示 var rowCounter=0; 函数createTH{ var noOfRow=document.getElementByIdaddItemTable.rows.length; var temp=document.getElementByIdaddItemTable; var table=temp.getElementsByTagName'tbody'[0]; var row=table.insertRow-1; var cell2=row.insertCell0; var cell3=row.insertCell1; cell2.innerHTML=这是在表div中; 单元格2.样式=边框:虚线; cell3.innerHTML=这是在另一个div中; 单元格3.样式=边框:虚线; var thContent=++'测试'+''+'*'+' var mainTable=document.getElementByIdaddItemTable; $'addItemTable>tbody>tr'.eqrowCounter.prependthContent; 行计数器++; }
当函数调用时,可以使用行计数器增加行的索引数并在其中追加数据 这是演示 var rowCounter=0; 函数createTH{ var noOfRow=document.getElementByIdaddItemTable.rows.length; var temp=document.getElementByIdaddItemTable; var table=temp.getElementsByTagName'tbody'[0]; var row=table.insertRow-1; var cell2=row.insertCell0; var cell3=row.insertCell1; cell2.innerHTML=这是在表div中; 单元格2.样式=边框:虚线; cell3.innerHTML=这是在另一个div中; 单元格3.样式=边框:虚线; var thContent=++'测试'+''+'*'+' var mainTable=document.getElementByIdaddItemTable; $'addItemTable>tbody>tr'.eqrowCounter.prependthContent; 行计数器++; }
通过使用外部Html,我又找到了一个解决这个问题的方法。只是对这个问题采取了不同的方法 函数createTH{ var noOfRow=document.getElementByIdaddItemTable.rows.length; var temp=document.getElementByIdaddItemTable; var table=temp.getElementsByTagName'tbody'[0]; var row=table.insertRow-1; var cell1=row.insertCell0; var cell2=row.insertCell1; var cell3=row.insertCell2; elemVal=+test+'&nb 标普“+”*“+”; cell1.outerHTML=elemVal; cell2.innerHTML=这在表div中; cell2.style=边框:虚线; cell3.innerHTML=这在另一个div中; cell3.style=边框:虚线; }
通过使用外部Html,我又找到了一个解决这个问题的方法。只是对这个问题采取了不同的方法 函数createTH{ var noOfRow=document.getElementByIdaddItemTable.rows.length; var temp=document.getElementByIdaddItemTable; var table=temp.getElementsByTagName'tbody'[0]; var row=table.insertRow-1; var cell1=row.insertCell0; var cell2=row.insertCell1; var cell3=row.insertCell2; elemVal=+test+'+'*'++; cell1.outerHTML=elemVal; cell2.innerHTML=这在表div中; cell2.style=边框:虚线; cell3.innerHTML=这在另一个div中; cell3.style=边框:虚线; }
为什么要在内部创建?这在语法上是错误的。@Andrew OP在行的前面加了th,而不是tdWhy create?这在语法上是错误的。@Andrew OP在行的前面加了th,而不是td