使用javascript将text-field插入表格单元格

时间:2016-02-18 19:24:53

标签: javascript textfield

我正在创建一个程序,我想在其中向表格单元格添加输入字段。 请看下面的代码:

var arr_title = ["song","artist","genre"];
for (var title in arr_title){
    var newl = document.createElement("input");
    newl.id = 'edit_text';
    var  newf = "td_" + arr_title[title];
    newf.appendChild(newl);
}

newf获取td_song,td_artist等的值,这些已被定义为:

var td_song = document.createElement("td");
var td_artist = document.createElement("td");
var td_genre = document.createElement("td");

在同一个函数中,然后我将它们附加到一个表中,它可以正常工作

但是当我创建输入元素时,会出现错误:

未捕获的TypeError:newf.appendChild不是函数

我知道它没有结束标记,它需要在表单元素中,但是当我尝试添加任何其他元素时,错误是相同的。

帮助!

4 个答案:

答案 0 :(得分:2)

newf中存储的值是一个字符串,而不是DOM元素; appendChild不是字符串的有效方法。仅仅因为newf中存储的字符串值与您创建的变量的名称(td_song等)相匹配,并不意味着它现在是该元素的句柄。最好将创建的元素存储在一个对象中,键入该值:

var elems = {
  td_song: document.createElement("td"),
  td_artist: document.createElement("td"),
  td_genre: document.createElement("td")
};
var arr_title = ["song","artist","genre"];
for (var title in arr_title){
    var newl = document.createElement("input");
    newl.id = 'edit_text';
    var  newf = "td_" + arr_title[title];
    elems[newf].appendChild(newl);
}

答案 1 :(得分:1)

在此行之后,newf的内容只是一个读取“td_song”的字符串。

var  newf = "td_" + arr_title[title];

您可能会收到“newf不是函数”的JS错误?

如果你想让newf成为那些vars中的一个,你可以使用eval()来探索

var  newf = eval("td_" + arr_title[title]);

答案 2 :(得分:0)

您尝试追加的<td> ID是否为&#34; td _&#34; + arr_title [title]? 如果是这样,你需要做...

var newf = document.getElementById("td_" + arr_title[title]);
newf.appendChild(newl);

答案 3 :(得分:0)

newf是一个字符串,您不能将子项附加到字符串,如果您想引用具有此名称的变量,则应使用window

window[newf].appendChild(newl);

希望这有帮助。