我的目标是在现有部分下创建另一个部分,但我很难添加它,因为错误表示Uncaught TypeError: Cannot call method 'appendChild'
未定义。
我收到以下代码的错误:
getElementsByClassName("row").appendChild(sectionElement);
使用此创建的函数:
function getElementsByClassName(cl) {
if (!document.getElementsByClassName) {
document.getElementsByClassName = function (className) {
var node = [];
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
if((' ' + elem[i].className + ' ').indexOf(' ' + cl + ' ') > -1) retnode.push(elem[i]);
}
return node;
};
}
}
HTML代码:
<div class='row'>
<section class='well well-small'>
<legend>Select An Animal</legend>
<form method="post" id="speciesForm">
<div class="control-group">
<div class="controls"></div>
</div>
<input type="button" class="btn" >
<input type="button" class="btn" v>
</form>
</section>
</div>
答案 0 :(得分:0)
您的函数将始终返回undefined
,因为如果未定义getElementsByClassName
函数,则创建它但从不调用它。如果已定义,则您的功能不起作用。没有明确return
语句的函数将返回undefined
。对您的功能的这些修改应该可以解决问题:
function getElementsByClassName(cl) {
if (!document.getElementsByClassName) {
document.getElementsByClassName = function (className) {
var node = [];
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
if((' ' + elem[i].className + ' ').indexOf(' ' + className + ' ') > -1) retnode.push(elem[i]);
}
return node;
};
return document.getElementsByClassName(cl);
} else {
return document.getElementsByClassName(cl);
}
}
还应该注意,由于您在自定义函数中返回一个数组,因此对此函数的结果调用appendChild
将失败,而本机getElementsByClassName
将返回一个NodeList。