假设我有这个字符串:
var myhtml= "<html><body><div class='header'>Welcome</div><div class='news' id='new_1'>Lorem ipsum....</div><div class='news' id='new_2'>dolor sit amet...</div></body></html>";
&#13;
好吧,如果这是在普通网站上,我可以使用&#34; getElementsbyClassName&#34;获取我想要选择的类的所有元素(在我的例子中,&#34; news&#34;)。 但是......如果它是这样的情况,当你在变量中包含所有html时,我该如何获取它们?有没有办法让所有的div与课程#34;新闻&#34;?
答案 0 :(得分:5)
您可以使用cheerio:
var cheerio = require('cheerio');
var myhtml = "<html><body><div class='header'>Welcome</div><div class='news' id='new_1'>Lorem ipsum....</div><div class='news' id='new_2'>dolor sit amet...</div></body></html>";
var $ = cheerio.load(myhtml);
console.log($('.header').html() );//Welcome
答案 1 :(得分:1)
如果你正在讨论它的客户端JS和jQuery(你的标签中不清楚,混合的env标签):
var myhtml= "<html><body><div class='header'>Welcome</div><div class='news' id='new_1'>Lorem ipsum....</div><div class='news' id='new_2'>dolor sit amet...</div></body></html>";
var dom = $.parseHTML(myhtml);
var elem = $(dom).find(".news");
答案 2 :(得分:1)
是的,您可以像在常规HTML页面上那样获得它们,关键是在创建元素之后获取元素,因此选择类的代码必须在填充页面的代码之后。例如:
var myhtml= "<html><body><div class='header'>Welcome</div><div class='news' id='new_1'>Lorem ipsum....</div><div class='news' id='new_2'>dolor sit amet...</div></body></html>";
var x = document.getElementsByClassName("news");
var i;
for (i = 0; i < x.length; i++) {
x[i].style.color = "red";
}
答案 3 :(得分:1)
我考虑过一种不同的方法来解决这个问题,首先创建一个虚拟文档,然后将该HTML插入到虚拟文档中,然后你可以使用常规选择器找到任何HTML元素,以下是它的工作方式:
let htmlString= "<html><body><div class='header'>Welcome</div><div class='news' id='new_1'>Lorem ipsum....</div><div class='news' id='new_2'>dolor sit amet...</div></body></html>";
let virtualDocument = document.implementation.createHTMLDocument("Virtual Document");
virtualDocument.documentElement.innerHTML = htmlString;
selectedEle = virtualDocument.querySelectorAll(".news");
console.log(selectedEle); // Your selected element
但请注意使用document.implementation.createHTMLDocument并检查兼容性表