Javascript 如何使用html中的js获取下一个节点?

Javascript 如何使用html中的js获取下一个节点?,javascript,html,Javascript,Html,我有一个像这样的html <table> <tr> <td> <img src="logo.png" onclick="getNextTableNode(this)"> </td> </tr> </table> <table></table> 但是我怎样才能得到下一个tableNode呢?我不想使用id或名称。我试过

我有一个像这样的html

<table>
    <tr>
        <td>
            <img src="logo.png" onclick="getNextTableNode(this)">
        </td>
    </tr>
</table>
<table></table>
但是我怎样才能得到下一个tableNode呢?我不想使用id或名称。我试过:

tableNode2 = tableNode1.nextSibling;
但它不起作用。有人能帮忙吗?提前谢谢

浏览器会向dom添加一个
节点,而不管html中是否包含一个节点。您需要额外的
.parentNode
来获取表元素

拥有table元素后,使用
nextElementSibling

tableNode2 = tableNode1.nextElementSibling;
使用
nextSibling
作为旧浏览器的后备:

tableNode2 = tableNode1.nextElementSibling || tableNode1.nextSibling;
浏览器会向dom添加一个
节点,而不管html中是否包含一个节点。您需要额外的
.parentNode
来获取表元素

拥有table元素后,使用
nextElementSibling

tableNode2 = tableNode1.nextElementSibling;
使用
nextSibling
作为旧浏览器的后备:

tableNode2 = tableNode1.nextElementSibling || tableNode1.nextSibling;

创建两个实用程序,用于按标记名获取祖先和兄弟:

function closestParent(node, tag) {
    tag = (tag + "").toUpperCase();
    while (node && (node = node.parentNode) && node.nodeName !== tag)
       ;
    return node;
}
function nextSibling(node, tag) { 
    tag = (tag + "").toUpperCase();
    while (node && (node = node.nextSibling) && node.nodeName !== tag)
        ;
    return node;
}

然后使用如下实用程序:

function getNextTableNode(node) {
    return nextSibling(closestParent(node, "table"), "table");
}

这提供了非常广泛的浏览器兼容性。

创建两个实用程序,用于按标记名获取祖先和兄弟:

function closestParent(node, tag) {
    tag = (tag + "").toUpperCase();
    while (node && (node = node.parentNode) && node.nodeName !== tag)
       ;
    return node;
}
function nextSibling(node, tag) { 
    tag = (tag + "").toUpperCase();
    while (node && (node = node.nextSibling) && node.nodeName !== tag)
        ;
    return node;
}

然后使用如下实用程序:

function getNextTableNode(node) {
    return nextSibling(closestParent(node, "table"), "table");
}

这提供了非常广泛的浏览器兼容性。

getNextTableNode(This),imgNode==This而不是使用imgNode.parentNode.parentNode.parentNode.parentNode来获取表节点,您可以使用jQuery并执行以下操作:
$(imgNode).最近('table')
$(imgNode).最近('table').next()
.GetNextTable(This),imgNode==this您可以使用jQuery并执行以下操作,而不是使用imgNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode来获取表节点:
$(imgNode).最近('table').next()
。删除
()
。这不是一种方法。如果您想知道为什么需要nextElementSibling而不是nextSibling:polyfil示例是否删除了
()
。这不是一种方法。如果你想知道为什么你需要nextElementSibling而不是nextSibling:polyfil示例有很好的答案吗。我还打算在这些方面做些补充。回答得好。我还打算沿着这些思路补充一些东西。