getElementsByTagName('*');出现错误"Uncaught TypeError: undefined is not a function"

yhanw 2018-09-03 11:45:01

function getByClass(oParent, sClass){
var son = [];
var oSon = oParent.getElementsByTagName('*');
for(var i=0; i<oSon.length; i++){
if(oSon[i].className == sClass){
son.push(oSon[i]);
}
}
return son;
}


这个函数里的第三行代码出现错误“TypeError: oParent.getElementsByTagName is not a function”,找不出原因,求解答!
...全文
836 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Logerlink 2018-09-04
  • 打赏
  • 举报
回复
oParent为undefined,对undefined进行操作就会报这个错误
你可以看看调用函数时传进去的oParent是否为undefined
刘大狗敲代码 2018-09-04
  • 打赏
  • 举报
回复
打印一下oparent看看
丰云 2018-09-04
  • 打赏
  • 举报
回复
return oParent.getElementsByClassName(sClass);

简单一句话,又不会出错,非要搞得莫名其妙还有错。。。
天际的海浪 2018-09-04
  • 打赏
  • 举报
回复
引用 5 楼 qq_34966814 的回复:
getByClass函数在后面是这样用的:

var oPlayBox = document.getElementsByClassName('play_Box');
var oMarkLeft = getByClass(oPlayBox, 'mark_left')[0];

打印出oParent是“[object HTMLCollection]”,不是undefined

getElementsByClassName返回的是一个集合数组。数组中的元素才是DOM对象
var oPlayBox = document.getElementsByClassName('play_Box')[0];
yhanw 2018-09-04
  • 打赏
  • 举报
回复
getByClass函数在后面是这样用的:

var oPlayBox = document.getElementsByClassName('play_Box');
var oMarkLeft = getByClass(oPlayBox, 'mark_left')[0];

打印出oParent是“[object HTMLCollection]”,不是undefined

天际的海浪 2018-09-04
  • 打赏
  • 举报
回复
因为你传参的oParent的值不是DOM对象。请检查oParent的值
另外可以可以直接用
oParent.querySelectorAll("."+sClass);

oParent.getElementsByClassName(sClass);
不需要写函数

87,972

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧