2014-11-17 4 views
0

Я пытаюсь выбрать элемент родительской формы ввода. Элемент формы не обязательно является прямым родительским узлом. В настоящее время это выводит «undefined» в мой журнал.Моя рекурсивная функция ничего не возвращает

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; 
    } 
} 

Почему я получаю undefined в моем журнале консоли?

ответ

3

не только

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; 
} 
Смежные вопросы