Javascript 为什么parentNode未定义?

Javascript 为什么parentNode未定义?,javascript,dom,Javascript,Dom,我正在尝试编写一个函数,该函数接受一个ID,然后遍历DOM以查看该项是否是标记的子项。这应该不会太难,但是我的parentNode返回为undefined?我错过了什么 这是我的代码的简化版本。。。提前谢谢 <!DOCTYPE html> <html lang="en"> <body> <div id="top"> <div id="top2"></div> <div id="top3">&l

我正在尝试编写一个函数,该函数接受一个ID,然后遍历DOM以查看该项是否是标记的子项。这应该不会太难,但是我的
parentNode
返回为
undefined
?我错过了什么

这是我的代码的简化版本。。。提前谢谢

<!DOCTYPE html>
<html lang="en">
<body>

<div id="top">
    <div id="top2"></div>

    <div id="top3"></div>

    <div id="top4"></div>

    <div id="top5">
        <div id="top5_1"></div>
    </div>
    <div id="top6">
            <div id="top6_1">
                <a href="" id="findMe">here I am...</a>
            </div>
    </div>
</div>

<script>

function findParent(startID, finish){

// change this from id to tag 
start = document.getElementById(startID).tagName;

    while (start.parentNode) {
        start = start.parentNode;

        if (start.tagName === finish){
            console.log("true " + startID + " is a child of " + finish);

        }else{
            console.log("false " + startID + " ISN'T a child of " + finish);
        }

    }
}

findParent("findMe", "BODY");


</script>
</body>
</html>

函数findParent(开始、结束){
//将此从id更改为标记
开始=document.getElementById(startID).tagName;
while(start.parentNode){
start=start.parentNode;
如果(start.tagName==finish){
log(“true”+startID+”是“+finish”的子级);
}否则{
log(“false”+startID+”不是“+finish”的子级);
}
}
}
findParent(“findMe”、“BODY”);
问题是:

start = document.getElementById(startID).tagName;

    while (start.parentNode) {
        start = start.parentNode;
您试图从标记名
获取父节点
,该标记名是一个字符串。

删除
标记名
,您应该会没事的。

试试
start=document.getElementById(startID)@AlexanderV.B
startID
是一个变量。错误在哪一行
while(start.parentNode)
在这里?您可以使用
$('#'+startID).parent('#'+finishID).length
查看元素是否是
div的子元素
使用
=
的任何特定原因?如果您将其更改为
==
,会发生什么?@Саааааа他没有使用jQuery@Tom Walters,总是在Javascript中使用
=
。使用
==
从来没有好的理由,如果您需要类型强制,请手动执行。Doh!错过了那个!谢谢