从字符串中获取标记内容而不使用jquery

pie*_*nik 3 javascript

我有这样的字符串:

string = `<div>
	  <div>This is not to be used</div>
	  <div id="takeThis">
		  <p>Some content</p>
		  <div>Some more content<div>
		  ...
	  </div>
	  <div>Also not relevant
	  </div>
	</div>`
  
// TODO get the content 'Some content' and 'Some more content'
Run Code Online (Sandbox Code Playgroud)

在平原JS我想要提取id="takeThis"内容为字符串.

我试过了:

  1. RegExp喜欢:<div\sid=\"takeThis\">([\s\S]*)<\/div>- 问题是它需要第一次或最后一次</div>- 而不是div节点作为一个整体
  2. const parser = new DOMParser(); const doc = parser.parseFromString(str, 'text/html'); DOMParser似乎剥离了id属性.

编辑:我有字符串 - 而不是Html

我看到我的第二种方式是工作但不是在所有情况下.我要调查一下.

Sat*_*pal 6

你可以使用Element.querySelector()on createddiv

返回第一个元素,该元素是调用它的元素的后代,该元素与指定的选择器组匹配.

var str = `<div>
  <div>First
  </div>
  <div id="takeThis">
      <p>sad</p>
      <div> sd asd asda sd asdd dsfsdf sdf<div>
  </div>
  <div>
  </div>
</div>`

const div = document.createElement('div'); 
div.innerHTML = str;

console.log(div.querySelector('#takeThis').textContent)
Run Code Online (Sandbox Code Playgroud)