使用jQuery获取DIV元素之外的文本

时间:2016-08-02 06:21:35

标签: javascript jquery ajax

我正在尝试访问某个页面并从此页面获取值。

首先我无法访问此页面,因此我无法对代码进行任何修改,这就是问题,因为它看起来没有正确编码。

请查找页面(来源)的示例(index.html)

我使用ajax get方法访问此页面。

<div id="box" style="background-color:#000000; margin:0px;">
    <b>
        <big>
            <span style="color:#00BB77;">Tue, 02-08-2016</span>
        </big>
    </b>
</div>
MobApp iOS.A in C04
<br>
    09:00 am-11:00 am
<br>
<b>
    <big></big>
</b>
<br>
    MobApp Andr .A in C12
<br>
    01:30 pm-03:30 pm
<br>
<b>
    <big></big>
</b>
<br>
<div id="box" style="background-color:#000000; margin:0px;">
    <b>
        <big>
            <span style="color:#00BB77;">Wed, 03-08-2016</span>
        </big>
    </b>
</div>
    Adv. Studio 1.A in C11
<br>
    01:30 pm-03:30 pm
<br>
<b>
    <big></big>
</b>
<br>
<div id="box" style="background-color:#000000; margin:0px;">
    .....etc....

我已经编写了一个代码示例,用于获取范围内的值(日期):

$.ajax({
   url: 'http://www.thewebsite.com/index.html',
   type: 'GET',
   success: function(res) {
      var data = $.parseHTML(res);
      $(data).find('#box').each(function() {
          alert($(this).find('span').html());
      });
   }
 });

它有效我得到: 2016年8月2日星期二 2016年8月3日星期三等...

我想现在得到</div><br>(主题)和(时间)之后的内容

正如您所看到的,有时每天只能有一个科目或更多。

我知道如果所有内容都在适当的div元素内部会更容易,但是他们很久以前就编写了他们的网站并且他们不会改变它...

我尝试使用next()或nextSibling.nodeValue()获取一些值,但没有成功。

所以提前感谢提示或解决方案。

干杯

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用javascript子节点:

 var children= (document.getElementById("box")).childNodes;
 var i=-1,length=children.length;
 while(++i <  length){
  //chidrent text node will also come
 console.log(children[i]);

 }

答案 1 :(得分:1)

$(data).find(&#39;#box&#39;)将仅返回带ID框的第一个元素,因为ID选择器是唯一的。因此,如果您想要使用ID框访问所有元素,请使用类选择器。

例如:使用class =&#34; box&#34;     <div class="box" style="background-color:#000000; margin:0px;">

然后

$.ajax({
  url: 'http://www.thewebsite.com/index.html',
  type: 'GET',
  success: function(res) {
    var data = $.parseHTML(res);
    $(data).find('.box').each(function() {
      var children = this.childNodes,
        i = -1,
        length = children.length;

      while (++i < length) {
      console.log(children[i]); // This will give you each child nodes of div with class box. You can extract the HTML contents of these child nodes here.
    }
});