closestParent 方法总是 returns 'undefined'
closestParent method always returns 'undefined'
我很难写一个函数(或更具体的 ES6 Class 方法)returns 最接近父元素匹配指定选择器的元素。
我的函数再次递归调用自身,直到在当前元素 classList
属性.
中找到想要的 class
如果我记录元素,我会得到我想要的确切元素,但如果我记录函数调用本身,它总是 returns undefined
.
这是我的代码:
findParent (element, selector) {
if (element === document) return null // stops when at end of tree
if (element.classList.contains('foo-selector')) {
console.log(element) // logs the expected element
return element // returns 'undefined'
}
this.findParent(element.parentNode) // function calls itself again
}
我做了一些实验,查看了 getClosest 函数的不同实现,发现了一个使用 for 循环 的有效实现。但除此之外,它使用了非常相似的方法。
这让我得出结论,我在递归方面做错了什么;我只是看不到什么...
有什么想法吗?
你再打电话不还。像这样更改它:
findParent (element, selector) {
if (element === document) return null // stops when at end of tree
if (element.classList.contains('foo-selector')) {
console.log(element) // logs the expected element
return element // returns 'undefined'
}
return this.findParent(element.parentNode) // function calls itself again
}
您需要从再次调用递归函数的地方return
findParent (element, selector) {
if (element === document) return null // stops when at end of tree
if (element.classList.contains('foo-selector')) {
console.log(element) // logs the expected element
return element
}
return this.findParent(element.parentNode)
}
我很难写一个函数(或更具体的 ES6 Class 方法)returns 最接近父元素匹配指定选择器的元素。
我的函数再次递归调用自身,直到在当前元素 classList
属性.
如果我记录元素,我会得到我想要的确切元素,但如果我记录函数调用本身,它总是 returns undefined
.
这是我的代码:
findParent (element, selector) {
if (element === document) return null // stops when at end of tree
if (element.classList.contains('foo-selector')) {
console.log(element) // logs the expected element
return element // returns 'undefined'
}
this.findParent(element.parentNode) // function calls itself again
}
我做了一些实验,查看了 getClosest 函数的不同实现,发现了一个使用 for 循环 的有效实现。但除此之外,它使用了非常相似的方法。
这让我得出结论,我在递归方面做错了什么;我只是看不到什么... 有什么想法吗?
你再打电话不还。像这样更改它:
findParent (element, selector) {
if (element === document) return null // stops when at end of tree
if (element.classList.contains('foo-selector')) {
console.log(element) // logs the expected element
return element // returns 'undefined'
}
return this.findParent(element.parentNode) // function calls itself again
}
您需要从再次调用递归函数的地方return
findParent (element, selector) {
if (element === document) return null // stops when at end of tree
if (element.classList.contains('foo-selector')) {
console.log(element) // logs the expected element
return element
}
return this.findParent(element.parentNode)
}