2010-06-29 53 views
0

我有一个麻烦,我正在开发一个代码,以显示10个正在从xml文件馈入的杂志。我有它的工作在一定程度上,FF和IE7 + 8不喜欢它,也许因为它说在第62行有一个错误 - 作为调用数据被喂入的核心函数。从XML文件分页的jQuery结果集问题

这是我的代码:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<meta name="robots" content="noindex, nofollow" /> 
<title>Brave Creative - Online Archive</title> 
<link rel="stylesheet" href="css/global.css" media="screen" /> 
<script type="text/javascript" charset="UTF-8" src="js/jquery.js"></script> 
<script type="text/javascript"> 

$(document).ready(function() { 

$.ajax({ 
    type: "GET", 
    url: "issues.xml", 
    dataType: "xml", 
    success: function(xml) { 

    var shelf = $('#shelf-items'); 
       var startIndex = 0; 
       var howMany = 10; 
       var $issues = $(xml).find('issue'); 
       var totalIssues = $issues.length; 
    var numPages = Math.ceil(totalIssues/howMany) 

    $('span.issuecount').html(+totalIssues+'&nbsp;Issues - '+numPages+'&nbsp;Pages'); 

       var displayIssues = function() { 
         var $issuesPaginated = $issues.slice(startIndex , (totalIssues - startIndex) + howMany); 
         $('#shelf-items li').fadeOut(500); 
         $issuesPaginated.each(function(){ 
          var id = $(this).attr('id'); 
          var date = $(this).find('date').text(); 
          var cover = $(this).find('cover').text(); 
          var issue = $(this).find('issuenumber').text(); 
          var url = $(this).find('url').text(); 
          $('<li id="'+id+'"></li>').html('<a href="'+url+'"><img src="images/covers/'+cover+'" alt="" /></a><br />'+date+' - #'+issue+'').fadeIn(500).appendTo(shelf); 
         }); 
       } 

       $('#prevIssueButton').click(function() { 
        if(startIndex < howMany) { 
         startIndex -= howMany; 
         displayIssues(); 
        }else { 
     startIndex = 0; 
         displayIssues(); 
     $('span.error').html('No Issues to Display - You are now on Page 1').fadeIn(300).fadeOut(3000); 
        } 
       }); 
       $('#nextIssueButton').click(function() { 
     if(startIndex + howMany <= totalIssues) { 
         startIndex += howMany; 
         displayIssues(); 
        }else { 
     $('span.error').html('No Issues to Display - You are now on Page 1').fadeIn(300).fadeOut(3000); 
         startIndex = 0; 
         displayIssues(); 

        } 
       }); 
       displayIssues().fadeIn(500); 
      } 
    }); // end ajax call 

}); // end document-ready 

</script> 
</head> 
<body> 

<div id="bc-publish"><span></span></div> 

<br /> 

<div id="wrapper"> 

<header> 
    <h1>Online Archive: <span>FSM</span></h1> 
</header> 

    <section id="buttons"> 

    <a href="#" id="prevIssueButton" title="Toggle Previous Entries">Previous</a> 
     <a href="#" id="nextIssueButton" title="Toggle Next Entries">Next</a> 

     <span class="error"><a></a></span> 

     <div class="clear"></div> 

    </section> <!-- /buttons --> 

    <section id="shelf"> 

    <ul id="shelf-items"></ul> 

     <div class="clear"></div> 

    </section> <!-- /shelf --> 
    <br /> 
    <span class="issuecount"></span> 

    <br /><br /> 

    <span class="logo"><a href="http://www.bravecreative.co.uk" title="Brave Creative"><img src="images/brave-creative-logo.jpg" alt="Brave Creative" /></a></span> 
    <span class="address"> 

    <span>t.</span> 01733 392978 <span>m.</span> 07719442825<br /> 
    <span>e.</span> [email protected]<br /> 
     4 Milnyard Square, Orton Southgate, Peterborough PE2 6CX 

    </span> 

    <div class="clear"></div> 

</div> <!-- /wrapper --> 

</body> 
</html> 

上一步和下一步按钮不能正常工作,比如我点击下一步,我去第2页,再点击下一步 - 它的空白,并单击最后一次我被告知我没有更多的结果查看。但是,如果我点击上一步开始并返回3次(再次开始),然后单击下一步我可以循环回到同一问题,这真的让我感到困惑,任何帮助将深表感谢!

回答

0

只是读你的代码我有几句话。

此:

$('span.issuecount').html(+totalIssues+'&nbsp;Issues - '+numPages+'&nbsp;Pages'); 

应该是没有 '+' 才 'totalIssues',还是我失去了一些东西?

$('span.issuecount').html(totalIssues+'&nbsp;Issues - '+numPages+'&nbsp;Pages'); 

$('<li id="'+id+'"></li>').html('<a href="'+url+'"><img src="images/covers/'+cover+'" alt="" /></a><br />'+date+' - #'+issue+'').fadeIn(500).appendTo(shelf); 

结束似乎做事情的顺序错误,不是吗?先淡出然后appendTo?

$('#prevIssueButton').click(function() { 
       if(startIndex < howMany) { 
        startIndex -= howMany; 
        displayIssues(); 

看起来很奇怪也一样,如果startIndex确实是小于的howmany,然后从startIndex将在调用后是负的,请问这是故意的吗?

然后我不确定在Ajax调用的成功事件处理程序中拥有所有代码是个好主意。我会分开这些东西,但也许你已经尝试过,并决定这一点。这只是一个想法。