我正在制作一个程序,要在其中添加输入字段到表格单元格。
看下面的代码:

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不是函数

我知道它没有结束标签,它必须位于一个form元素中,但是当我尝试添加任何其他元素时,错误是相同的。

救命!

最佳答案

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);
}

07-24 15:12