javascript - 如何在没有 JQuery 的情况下正确实现跨浏览器兼容的 nextSibling/nextElementSibling 函数?

标签 javascript cross-browser

我需要更新一些旧的 Javascript 以跨浏览器兼容。该代码最初是为 IE6 创建的,并且由于 HTML 的布局方式而大量使用 nextSibling 和 previousSibling。

显然 nextSibling 和 previousSibling 在 Firefox 等中的工作方式不同。下一个最佳选择 nextElementSibling 在旧的 IE 浏览器中不起作用。看来我需要做的是创建一个适用于大多数浏览器的 nextElementSibling 等效函数。

这是我的尝试,但似乎不太正确:

function getNextElementSibling(CurrentElement) {
    if (CurrentElement.nextElementSibling) {
        return CurrentElement.nextElementSibling
    } else {
        do {
            CurrentElement = CurrentElement.nextSibling;
        } while (CurrentElement && CurrentElement.nodeType !== 1);
        return CurrentElement;
    }
} 

需要做什么来修复/更换它?

请注意,JQuery 和其他库不是一个选项

最佳答案

我有同样的问题,我觉得奇怪的是 dojo-framework(我使用的是 v1.7)没有为此提供方便的方法。

我的浏览器兼容性问题与 IE 版本 7、8 和 9 以及 webkit 浏览器(最新版本)有关,我也在 Firefox 14 上测试过它并且似乎可以工作。

function getNextElementSibling(element) {

    if (element.nextElementSibling) {

        return element.nextElementSibling;
    } else {

        return element.nextSibling;
    } 
}

关于javascript - 如何在没有 JQuery 的情况下正确实现跨浏览器兼容的 nextSibling/nextElementSibling 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048322/

相关文章:

javascript - 如何用一种颜色为内容相同的行着色?

javascript - 动态添加的表单元素在 IE 9 中不会被发布

java - Applet-Javascript 交互中的焦点行为

jquery - div 在 IE8 中不可见

CSS Div 在 IE 上不合适

javascript - 如何使用 JQuery 从相对元素获取 html 文本?

javascript - 页面加载时调用全屏脚本

javascript - JSON Stringify 因 UTC 而更改日期时间

javascript - navigator.userAgent每个浏览器都不同,里面的值的含义是什么?

javascript - 从 promise Angular 更新 ng-src