Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 在指定的行后面添加行<;tr>;_Javascript_Jquery - Fatal编程技术网

Javascript 在指定的行后面添加行<;tr>;

Javascript 在指定的行后面添加行<;tr>;,javascript,jquery,Javascript,Jquery,基本上我有一个表,用户可以添加行。根据行类型,它们的添加方式略有不同。标准行始终由.append()添加,但“指令”行应始终添加在创建或修改的最后一行之后 //Lastrow is always a Jquery object of a table row that's present on the DOM. //The variable is set/reset whenever a row is created or modified. lastRow = $(row) ... //in

基本上我有一个表,用户可以添加行。根据行类型,它们的添加方式略有不同。标准行始终由.append()添加,但“指令”行应始终添加在创建或修改的最后一行之后

//Lastrow is always a Jquery object of a table row that's present on the DOM.
//The variable is set/reset whenever a row is created or modified.
lastRow = $(row)

...
 //indexRow = lastRow, but passed as an argument. 
function addRow(rowType, indexRow){
  newRow="<tr><td>Test</td></tr>";  

  //Want to add the new row after the last created row, and it doesn't work.
  //However if lastRow is an existing row that's been modified, it does work.
  if(rowType =='instructionRow'){
      indexRow.after($(newRow));
      indexRow.get(0).scrollIntoView();
  }

  if(rowType=="normalRow"){
     $('tableId').append(newRow);
     lastRow = $(newRow);
  }
}
因此,当新创建的行添加到lastRow时,我可以看出它们不是活动的dom元素,但不确定为什么或者如何绕过它

编辑:小提琴:

复制

  • 按“添加普通行”。两三次
  • 按“添加指令行”。什么也不会发生(这是注定的)
  • 按“更新正常行”。第一个普通行将更新。 4按“添加指令行”。现在将在更新的正常行之后添加指令行

  • 由于变量
    newRow
    是一个字符串,当您执行以下操作时:

    $('#tableId').append(newRow);
    lastRow = $(newRow);
    
    它不是同一个“newRow”-第二行通过重新解析字符串来创建一个新元素(没有附加到DOM中)

    相反,您可以:

    lastRow = $(newRow);
    $('#tableId').append(lastRow);
    


    这两个选项都会将
    lastRow
    设置为已追加的行,并且位于DOM中

    请单击
    []
    并生成一个添加了复制说明的行。谢谢。虽然这两种方法对我都不管用,但我还是在玩弄它。我在主帖上加了一把小提琴。编辑:是否让它与appendTo()一起工作。由于某种原因,缓存没有重新加载。
    lastRow = $(newRow);
    $('#tableId').append(lastRow);
    
    lastRow = $(newRow).appendTo('#tableId')