我的递归函数没有返回任何内容

My recursive function isn't returning anything

本文关键字:任何内 返回 递归函数 我的      更新时间:2023-09-26

我正在尝试选择输入的父表单元素。表单元素不一定是直接父节点。目前,这将"未定义"输出到我的日志中。

var anInputElement = document.querySelector(...);
var formElement = getFormElement(anInputElement);
console.log(formElement);
function getFormElement(elem) {
  //if we've traversed as high as the `body` node then
  //we aint finding the `form` node
  if(elem.nodeName.toLowerCase() !== 'body') {
    var parent = elem.parentNode;
    if(parent.nodeName.toLowerCase() === 'form') {
      return parent;
    } else {
      getFormElement(parent);
    }
  } else {
    return false;
  }
}

为什么我在控制台日志中未定义?

不仅仅是

getFormElement(parent);

return getFormElement(parent);

和简化,只是为了好玩:

function getFormElement(elem) {
  if(elem.nodeName.toLowerCase() !== 'body') {
    var parent = elem.parentNode;
    return parent.nodeName.toLowerCase() === 'form' ? parent : getFormElement(parent);
  }
  return false;
}