【问题标题】:Find DOM element in text content using javascript使用 javascript 在文本内容中查找 DOM 元素
【发布时间】:2013-12-30 20:53:45
【问题描述】:

如果可能的话,请把我推向这个问题的副本。我到处找,但似乎找不到。

如何对文本内容执行 getElementById?

var test = '<div id="thisDiv">HI</div>';

如果 thisDiv 不是 DOM 的一部分,我该如何选择它?

【问题讨论】:

  • 但是....你怎么能getElement,如果它不是一个元素...?
  • 那里有一个字符串,而不是 DOM 元素。
  • 如果是字符串,那么获取 thisDiv 值的最简单方法是什么?
  • 使用正则表达式(例如/&lt;(.|\n)*?&gt;/g)

标签: javascript html-parsing getelementbyid


【解决方案1】:

创建一个元素,将您的字符串设置为其innerHTML,然后在其中搜索...

类似

var test = '<div id="thisDiv">HI</div>';
var element = document.createElement('DIV');
element.innerHTML = test;

alert(element.textContent);

(更改了最初的 outerHTML,因为您只能维护对原始创建元素的引用,而不是由新 html 创建的新元素)

【讨论】:

    【解决方案2】:

    要获取标签内的文本值,请使用 RegEx:

    var re = new RegExp("<(.|\n)*?>", "g");
    var content = test.replace(re,"");
    

    【讨论】:

      【解决方案3】:

      您可以创建一个临时 DIV 并用您的字符串填充它。即使那样,您访问它的能力也会受到限制。将其添加到 DOM 以使用 getElementById 访问它。

      var div = document.createElement('div');
      div.innerHTML = '<div id="thisDiv">HI</div>';
      alert(div.firstChild);
      

      【讨论】:

        【解决方案4】:

        为了避免创建额外的元素,我们可以将它添加到正文中...

        var test = '<div id="thisDiv">HI</div>';
        document.querySelector('body').innerHTML = test;
        console.log(document.getElementById('thisDiv'));
        

        Obligatory Fiddle

        只获取文本...

        console.log(document.getElementById('thisDiv').textContent); // returns HI
        

        【讨论】:

          猜你喜欢
          • 2012-07-30
          • 1970-01-01
          • 1970-01-01
          • 2017-04-10
          • 2012-01-25
          • 2013-01-21
          • 1970-01-01
          • 2016-03-20
          相关资源
          最近更新 更多