我正在创建一个程序,我想在其中向表格单元格添加输入字段。 请看下面的代码:
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不是函数
我知道它没有结束标记,它需要在表单元素中,但是当我尝试添加任何其他元素时,错误是相同的。
帮助!
答案 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);
希望这有帮助。