0

我正在寻找修改我的 xmlParser 返回多少数据结果的方式。我发现使用:

:lt()

像这样:

 $(xml).find("override:lt(10)").each(function () {

允许我从 xml 文件返回前 X 个结果。我接下来要做的是拥有一组按钮或滑块,以允许用户选择要添加的更多结果。有人可以指出我正确的方向。

我在 HEAD 内容中也有这方面的 javascript,对吗?

以下已编辑和补充

我最初的完整代码:

<script type="text/javascript">
    var xml;
    $(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "../_/xml/sgr_or.xml",
            dataType: "xml",
            success: xmlParser
        });
    });
    function xmlParser(data) {
        xml = data;
        $('#load').fadeOut();
    $(xml).find("sgr_or").each(function () {
            var lastmod = $(this).find("lastmodified").text();
        $("#lastmodified").append(lastmod);
        });
        $(xml).find("override:lt(25)").each(function () { //lt returns the desired number of results
            sgr = $(this).attr("sgr_or");
            var location = $(this).find("location").text();
            var keyserial = $(this).find("keyserial").text();
            var datestamp = $(this).find("datestamp").text();
            var notes = $(this).find("notes").text();
            var part = $(this).find("part").text();
            var defect = $(this).find("defect").text();
            var operator = $(this).find("operator").text();
            var colour =$(this).find("colour").text();

    $("#list").append('<li><a id="'+colour+'_override" rel="external" href="#dialog-overrides" data-transition="slide"><img src="../_/images/authorisers/'+operator+'.jpg" alt="'+operator+'"><h4 id="line1info">'+keyserial+" @ "+location+'</h4><p>'+datestamp+" "+part+" "+defect+'</p></a></li>');
        $('#list').listview('refresh');
        });
    }

基本上我很困惑,因为当我在函数停止工作后删除(数据)时,我以为我理解了解析器方法,但似乎没有......我玩过这个并尝试了很多东西,但仍然无法为了让它工作,你能解释一下我是如何摆脱 (data) 并添加 (var) 的吗?

抱歉,我好像知道的很少,我正在努力学习...

4

1 回答 1

1

使用选择框,您可以拥有它。

HTML

<select class='select'>
  <option value="10">10</option>
  <option value="20">20</option>
  <option value="30">30</option>
  <option value="40">40</option>
</select>

更新的 JS:此代码可以稍后重构,但试试这个。解决方案!

  <script type="text/javascript">
            var xml;

            $(document).ready(function(){
                $.ajax({
                    type: "GET",
                    url: "../_/xml/sgr_or.xml",
                    dataType: "xml",
                    success: xmlParser
                });
            });

            function xmlParser(data) {
                xml = data;

                $('#load').fadeOut();

                $(xml).find("sgr_or").each(function () {
                    var lastmod = $(this).find("lastmodified").text();
                    $("#lastmodified").append(lastmod);
                });

                display(25); // inital value to display
            }

    function display(val){

        var liHTML = '', sgr, location, keyserial, datestamp, notes, part, defect, operator, colour;
        $(xml).find("override:lt(" + val + ")").each(function () {
            sgr = $(this).attr("sgr_or");
            location = $(this).find("location").text();
            keyserial = $(this).find("keyserial").text();
            datestamp = $(this).find("datestamp").text();
            notes = $(this).find("notes").text();
            part = $(this).find("part").text();
            defect = $(this).find("defect").text();
            operator = $(this).find("operator").text() !== 'unknown' ? 'name_of_placeholder';
            colour =$(this).find("colour").text();
            liHTML += '<li><a id="'+colour+'_override" rel="external" href="#dialog-overrides" data-transition="slide"><img src="../_/images/authorisers/'+operator+'.jpg" alt="'+operator+'"><h4 id="line1info">'+keyserial+" @ "+location+'</h4><p>'+datestamp+" "+part+" "+defect+'</p></a></li>'
        });

        $("#list").html(liHTML).listview('refresh'); 
    }



            $('.select').on('change', function(e){
                val = e.target.value;
                display(val); // call on change
            });

    </script>

笔记

不是最整洁的,但应该给你一个想法并帮助你。:)

另一个更新

JSFIDDLE,检查链接。

于 2013-07-29T10:42:17.530 回答