【问题标题】:InvalidArgument with HTML Table's insertBefore method带有 HTML Table 的 insertBefore 方法的 InvalidArgument
【发布时间】:2010-08-26 13:26:12
【问题描述】:

我想我知道这是一个 IE 错误... 我需要在 HTML 表格的确切位置添加新行。 (不想要 insertRow(index) 因为这看起来会更好)

function AddNewItem(td) {   ///td comes from button at the HTML code, <input ... onclick="AddNewItem(this.parentNode)"
  var grid = GetGrid();
  var itemIndex = $(td.parentNode).attr('index');
  ///alert(itemIndex + "'e eklenecek");
  var newRow = document.createElement('tr');
      var td1 = document.createElement('td');$(td1).addClass('td');
      var td2 = document.createElement('td');$(td2).addClass('td text r');
      var td3 = document.createElement('td');$(td3).addClass('td text r');
      var td4 = document.createElement('td');$(td4).addClass('td text r');
  $(newRow).append(td1);$(newRow).append(td2);$(newRow).append(td3);$(newRow).append(td4);

  grid.insertBefore(newRow, td.parentNode); ///THIS GIVES AN INVALIDARGUMENT error .. Any solutions will be appreciated :)
}


function GetGrid() {
 var grid = document.getElementById("MasterTableView");
 return grid;
}

【问题讨论】:

  • 您能否详细说明为什么要混合普通 DOM 和 jQuery? insertRow 有什么问题?
  • 我应该使用 jquery 的 create 而不是 document.Create 之类的?我不知道,我做我最了解的事情。毕竟我不是最好的 JS 忍者 :)
  • insertRow 想要一个索引,并添加一个空行。比在我必须找到那个空行和广告 TD 之后......我认为它首先会很丑......我应该使用 insertRow 对吗? ..我应该去这样做
  • “找到那个空行”是什么意思? insertRow 返回对创建行的引用。您应该使用所有 jQuery 或所有 DOM(使用 insertRow)。不要混淆。
  • 不知道它返回了一个引用。为什么不把它们混在一起:)

标签: javascript jquery xhtml insertion


【解决方案1】:

我的猜测td.parentNode 不是grid 的子元素。查看W3C specification for insertBefore 以确保您使用有效参数调用该方法。

【讨论】:

    【解决方案2】:

    我猜你向AddNewItem 传递了一个无效参数,这(至少在 IE 中)不是你想象的 td 元素。

    【讨论】:

    • 别担心 .. 就像我想的那样 td :) 它提供了 innerHTML 并且整个事情现在都可以工作了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多