我正在制作一个程序,要在其中添加输入字段到表格单元格。
看下面的代码:
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);
}