检查HTML是否已加载到DIV中

时间:2016-05-03 15:27:05

标签: javascript jquery html

我希望能够设置HTML页面并将其加载到单个主页中。每个html文件将被命名为日期(例如今天的03052016.html),然后每天在主页上提取正确的html。 但是并非所有日子都有html文件,在这种情况下它应该回滚到前一天。我已经成功加载了页面,很简单,但无法确定页面是否已加载并从当天减去一个。我目前的尝试如下:

<body>
<div id="success"></div>
  <script>
      //section creates the html file name for today
        var today = new Date();
        var dd = today.getDate();
        var mm = today.getMonth()+1; //January is 0!
        var yyyy = today.getFullYear();

        if(dd<10) {
            dd='0'+dd
        } 

        if(mm<10) {
            mm='0'+mm
        } 
        today = dd+mm+yyyy+'.html';
        var today = "05052016.html";
      //do loop to subtract days until file is found
        do{
          var found = true; //variable records file presence
          $( "#success" ).load( today, function( response, status, xhr ) {
              if ( status == "error" ) {
                  var found = false;

                  if(parseInt(dd)>1){
                      dd = parseInt(dd)-1;
                  }else {
                      mm = parseInt(mm)-1;
                      dd = 30 //will deal with 31/30/28 day months later.
                  }

                if(dd<10) {
                    dd='0'+dd
                } 

                if(mm<10) {
                    mm='0'+mm
                } 
                today = dd+mm+yyyy+'.html';
                  //
                console.log( msg + xhr.status + " " + xhr.statusText );
              }
            });
        }until(found == false )
    </script>  

我是网络创作的新手,所以如果我没有办法实现这一点,那就请大胆一点。它似乎很容易,但循环不起作用! 我目前正在使用FireFox进行测试,并使用jquery-1.10.2.js

2 个答案:

答案 0 :(得分:0)

检查所述div的内容的长度。

        var div = $('div');
        var dHtml = div.html();
        var long = dHtml.length;

       if(long > 0)
       {
          //do stuff
       }

答案 1 :(得分:0)

您需要了解ajax(后面的加载)是异步的,因此您无法在成功之外测试找到的内容。

试试这个:

function pad(num) {return String("0"+num).slice(-2)}
function getFilename(date)
  var dd = pad(date.getDate());
  var mm = pad(date.getMonth()+1); //January is 0!
  var yyyy = date.getFullYear();
  return ""+dd+mm+yyyy+".html";
}
var date = new Date(), 
    aDay = 10*24*60*60*1000, 
  giveUp = new Date(date.getTime()-(10*aDay)); // max 10 days back
function loadFile(date) {
  $("#success").load( getFilename(date), function() {
    if (status == "error") {
      if (date>giveUp) {
        date.setDate(date.getDate()-1)
        loadFile(date);
      }
    }
  });    
}
$(function() {
  loadFile(date);
});