javascript - 父级 DOM 元素中子级 DOM 元素的索引

标签 javascript html

我正在寻找一种纯 JS 方法来查找子项在其父项中的偏移量。

鉴于以下示例:

<div>
A 
<br>
short space elapsed, <b>and</b> up into this noiselessness came Ahab alone from his cabin. 

<span>Taking a few turns on the quarter-deck, he paused to gaze over the side</span>
</div>

我会得到 3 个 child ,a brbspan。每个都需要有一个相对于 div 开头的偏移量 - 因此,索引表示标签开头的 div 中有多少个字符。
因此 br 的偏移量为 2。

我最初的想法是获取 div 的所有,然后以某种方式从中能够轻松获取索引。

最佳答案

function getChildrenOffset(parent){

        var childNodes = parent.childNodes;
        var childrenLocations = [];
        var offset = 0;
        var tagIndex = 0;

    for(var d = 0; d < childNodes.length; d++){

        var node = childNodes[d];



        if(node.tagName !== undefined){
            // This is a tag
            tagIndex += 1;

            var curLocation = new OffsetData(offset, tagIndex, node.tagName);
            childrenLocations.push(curLocation);

            offset += node.outerHTML.length;

        }else{
            // Just text
            offset += node.length;
        }
    }

    return childrenLocations;
}

function OffsetData(offset, index, tag){
    this.Offset = offset;
    this.Index = index;
    this.TagName = tag;
}

关于javascript - 父级 DOM 元素中子级 DOM 元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360816/

相关文章:

javascript - 同时触发的多个 ajax 调用无法正常工作

html - iOS5 中基于元素的 native 滚动

html - 什么使下拉菜单内容 "stick"成为菜单项?

javascript - 在 javascript 中,stringify 数组不返回预期的行为

javascript - 我如何让正则表达式匹配精确的多个域,而不在前面或结尾有任何内容?

html - 悬停对图标图像的影响?

html - 裁剪表格中单元格的内容

html - WebHost 的自定义邮件客户端

javascript - 在 ionic 4 + Angular 中将日期转换为 DD/MM/YYYY

javascript - Chrome 扩展程序更改主机/域警告