Javascript 解析 HTML 并查找元素

Javascript parse HTML and find elements

提问人:Superzinho 提问时间:1/24/2019 最后编辑:Superzinho 更新时间:1/24/2019 访问量:2311

问:

注意:我在 chrome 控制台上运行它!

使用 jQuery 解析 html 后,我无法获取元素

var ar = document.getElementsByClassName("row")[4].getElementsByClassName("well result-box nomargin");
for (var i = 0; i < ar.length; i++) {
  try {
    var html = ar[i].getElementsByTagName("a")[2].getAttribute("href");
    $.ajax({
      url: html,
      success: function(result) {
        var resultHTML = $.parseHTML(result);
        // Here the HTML is parsed
      }
    });
  } catch {
    console.log(i);
  }
}

当我尝试在解析的 HTML 中获取它时,问题正在发生

.getElementsByClassName("well result-box nomargin")[0].getElementsByTagName("h2")[0].getElementsByTagName("a")[1].getAttribute("href").split("family/")[1];

我试过了,但它不起作用。$.find$.attr

AJAX 结果:https://hastebin.com/arelirobap.xml

javascript jquery html html 解析

评论

0赞 Rory McCrossan 1/24/2019
你能展示完整的JS吗?这两个样本似乎没有关系。我们还需要查看对 AJAX 请求的实际 HTML 响应。另请注意,您不能按 中的多个类进行选择,因此您将遇到问题getElementsByClassName()
0赞 Gilang Rizkie 1/24/2019
您在执行之前获取了该元素,因此它不会读取。尝试在加载后循环。ajaxajax
0赞 freedomn-m 1/24/2019
@GilangRizkie 看起来 OP 正在获取一个 hrefs 列表来解析结果,因此第 2 位代码将进入该部分 - 但只是猜测。//Here the HTML is parsed
0赞 p.s.w.g 1/24/2019
请显示 ajax 调用的返回结果,以便我们确认您正在尝试正确访问它。顺便说一句,如果您正在使用所有这些/调用,则可以简化。jQuerygetElementByXgetAttribute
1赞 Aria 1/24/2019
如果你有多个类,那么你可能应该使用document.querySelector()

答:

0赞 Francis Katalinic 1/24/2019 #1

如果使用 jquery 选择器 () 以正确的顺序指定多个类,则可以选择多个类。例:$('.class1 .class2').html()