如何解决element.tagName 返回未定义
我必须编写一个函数,该函数将返回具有给定 tagName 的最近亲属(父级或子级)。这是我的代码:
function closestRelative(parent,relativeName) {
var closestParent = parent.parentNode.closest(relativeName);
var childrenElements = parent.children;
var closetChild;
for(var i=0; i<childrenElements.length; i++) {
if(childrenElements[i].tagName === relativeName.toupperCase()){
closestChild = childrenElements[i];
}
}
console.log(closestChild.tagName);
//if(closestParent) return closestParent.tagName;
//if(closestChild) return closestChild.tagName;
//return null;
return closestChild.tagName.toString();
}
// Example case
document.body.innerHTML =
'<James>' +
'<Dave></Dave>' +
'<Mike></Mike>' +
'<Sarah></Sarah>' +
'</James>';
let parent = document.getElementsByTagName('James')[0];
let relative = closestRelative(parent,'Mike');
console.log(relative && relative.tagName); // prints MIKE
解决方法
您正在尝试阅读 .tagName
两次。
在您的 closestRelative
函数中,您将返回 closestChild.tagName.toString()
。然后在您的测试代码中,您正在执行 relative && relative.tagName
,尝试再次阅读它。由于函数已经返回一个字符串,读取 .tagName
的结果是 undefined
。
您可能希望删除最后一个 .tagName
中的 console.log
,或更改 closestRelative
以返回标签本身 (closestChild
) 而不是标签名称。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。