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

标签 javascript dom

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

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(父);

但是

返回 getFormElement(parent);

并简化,只是为了好玩:

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

  return false;
}

关于javascript - 我的递归函数没有返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26981406/

相关文章:

javascript - 创建一个按钮并使用 javascript 设置它的类

Javascript new Date(str) - 不同的解析规则

javascript - 'ItemIsLoading' on 指的是一个类型,但在这里被用作一个值

javascript - Dart 可以操作其他窗口中的 HTML 元素吗?

jquery - 更改图像 (img) 标签的来源不会在 IE 上调整大小

javascript - 如何克隆元素及其关联的事件回调?

javascript - jquery 中的 on() 函数不起作用

javascript - 如何在asp.net中单击按钮下载html文件?

javascript - 如何借助 key 生成 token ?

javascript - 如何在 javascript 中查找当前事件的下载?