【问题标题】:How insert an input field in a table cell?如何在表格单元格中插入输入字段?
【发布时间】:2011-12-06 15:07:30
【问题描述】:

抱歉这个菜鸟问题:我想创建一个带有输入字段的表,如果需要,可以在其中添加新字段。但是我不知道如何在另一个输入字段已经存在的单元格中添加另一个输入字段。

我的代码是:

var par=obj.parentNode;
while(par.nodeName.toLowerCase()!='tr')
{ par=par.parentNode; }
// this gives me the index of the row.. works fine.

cell1=document.getElementById('avz_tabelle').rows[par.rowIndex].cells;
// this puts the content of the cells into the array "cell1"

var feld = cell1[1].createElement("input"); 
feld.setAttribute("name","avz_keywords" + avz_array + "[]"); 
feld.setAttribute("onblur","");
feld.setAttribute("type","text"); 
feld.setAttribute("size","30"); 
// Now I create a input element
// And now comes the problem:

cell1[1].appendChild(feld); // --> doesn't work

有人给我建议吗? 我有了在没有桌子的情况下工作的想法,从理论上讲,这可以按照我的方式工作。但这不会令人满意:/

【问题讨论】:

  • element.createElement() 有效吗?我以为createElement() 只是document 的一种方法。
  • 你的html代码是什么? avz_tabelle 的行是否包含两个单元格?为什么需要获取obj的parentNode的行索引?
  • 你从哪里得到哪个错误?如果您没有得到任何消息,请告诉我们究竟是什么工作出乎意料,如果你得到一个帖子。

标签: javascript


【解决方案1】:

如果您查看调试控制台,您应该会看到类似

TypeError: Object #<HTMLDivElement> has no method 'createElement'

不要从cell1[1] 创建元素,而是使用document.createElement()

 var feld = document.createElement("input");

【讨论】:

    【解决方案2】:

    您应该使用document.createElement("input"); 而不是cell1[1].createElement("input");

    与往常一样(也如此处另一个答案所述),JavaScript 控制台应该是寻找问题所在提示的第一个地方!

    如果您想为每个表格单元格添加值以获取单独的 ID,实际上会不会容易得多?可能包含行索引和列索引的东西......然后你可以直接选择它。

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 2011-08-17
      • 2021-03-22
      • 2019-05-29
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2012-02-15
      • 2013-03-25
      相关资源
      最近更新 更多