Javascript 这孩子不工作
HTML: 当我调用Javascript 这孩子不工作,javascript,dom,dom-traversal,Javascript,Dom,Dom Traversal,HTML: 当我调用add时,会抛出uncaughttypeerror:Object#没有方法“appendChild”。知道为什么吗?不返回一个元素,它返回一个类似数组的对象。它基本上意味着可以将其用作数组 例如,你可以这样做: function add(content){ ul=document.getElementsByTagName("ul"); var li=document.createElement("li"); li.innerHTML=content;
add
时,会抛出uncaughttypeerror:Object#没有方法“appendChild”
。知道为什么吗?不返回一个元素,它返回一个类似数组的对象。它基本上意味着可以将其用作数组
例如,你可以这样做:
function add(content){
ul=document.getElementsByTagName("ul");
var li=document.createElement("li");
li.innerHTML=content;
ul.appendChild(li);
}
但是,如果这个列表有一个ID,为什么不直接使用它呢?ID在整个文档中必须是唯一的,因此此方法只返回一个元素
var ul = document.getElementsByTagName("ul")[0];
注意:请确保将
ul
声明为函数的局部变量(添加var
),除非您打算在函数外部使用它。document.getElementsByTagName不返回元素,而是返回元素数组
您需要循环此数组或获取一些唯一的元素
请参阅以下文档:
//检查表中多个单元格的对齐方式。
var table=document.getElementById(“预测表”);
var cells=table.getElementsByTagName(“td”);
对于(var i=0;i
您遇到的问题是getElementsByTagName()
(注意函数名称中的“s”所隐含的复数形式)返回一个DOM节点数组,而不是单个DOM节点,这是appendChild()
希望处理的;因此,您需要确定要使用的节点阵列:
// check the alignment on a number of cells in a table.
var table = document.getElementById("forecast-table");
var cells = table.getElementsByTagName("td");
for (var i = 0; i < cells.length; i++) {
var status = cells[i].getAttribute("data-status");
if ( status == "open" ) {
// grab the data
}
}
请记住,如果页面上只有一个ul
,您可以使用getElementsByTagName(“ul”)[0]
,或者(这可能更可取)向该ul
添加一个id
属性,然后使用getElementById()
选择它,这将像预期的那样,只返回该id
参考资料:
jQuery
——Jasper编辑了它,用javascript
替换了它。对不起,,,这一定是我的错误……当我使用getElementById时,控制台输出了“uncaughtTypeError:无法调用null的方法'appendChild'@bingie2680 my表明它工作正常:)。请检查链接,如果您仍然有问题,请创建一个关于您的场景的小提琴。
var ul = document.getElementById('datalist');
// check the alignment on a number of cells in a table.
var table = document.getElementById("forecast-table");
var cells = table.getElementsByTagName("td");
for (var i = 0; i < cells.length; i++) {
var status = cells[i].getAttribute("data-status");
if ( status == "open" ) {
// grab the data
}
}
function add(content){
ul=document.getElementsByTagName("ul")[0]; // the [0] identifies the first element of the returned array
var li=document.createElement("li");
li.innerHTML=content;
ul.appendChild(li);
}