在文档的HTML

时间:2016-06-16 17:38:58

标签: javascript string dom element

我将文档的HTML源代码作为字符串,以及元素以此字符串开头的索引i

我想要一个函数getElementByIndex(i),它返回与页面HTML字符串中位置i开始的元素对应的JavaScript DOM对象。

例如,我期望以下行为:

> var markup = document.documentElement.innerHTML;
> markup

    "<head></head><body><div id="a"></div><div id="b"></div></body>"

> getElementByIndex(19)        // 19 is the index of the first div's 
                               // '<' character in the markup string

     <div id="a"></div>

> getElementByIndex(19) === document.getElementById("a")

     true

> getElementByIndex(19) === document.getElementById("b")

     false

1 个答案:

答案 0 :(得分:0)

function getElementByIndex(htmlString, tagName, index) {
  var numOfEleBefore = htmlString.substr(0, index).split('<' + tagName).length - 1;
  return element = document.getElementsByTagName(tagName.toUpperCase())[numOfEleBefore]
}

你可以试试这个,但它做了几个假设:

  1. 必须将html缩小为单个字符串
  2. 您知道您要查找的代码类型
  3. html 完全按顺序模仿#1中提到的缩小字符串,标记中的空格数以及分配给每个标记的属性。像一个空格一样会导致它失败。