Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法理解prepend方法的行为_Javascript_Jquery_Html - Fatal编程技术网

Javascript 无法理解prepend方法的行为

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

我用代码创建了一个,下面的代码第一次运行良好,但当我反复创建它们时,即一次又一次,它就不起作用了

函数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; }
问题是因为您将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