【问题标题】:Generating a table with jQuery with XML data使用带有 XML 数据的 jQuery 生成表
【发布时间】:2016-06-01 23:09:54
【问题描述】:

我是 jQuery 和 js 的新手。我正在尝试从 XML 数据创建一个表,但我无法得到正确的输出。这是我目前所拥有的:

HTML:

<table id="daily_fruit">
    <tbody>

    </tbody>
</table>

jQuery:

var xml = '<daily_fruit><day>Mon</day><type>apple</type><day>Tues</day><type>orange</type><day>Wed</day><type>banana</type><day>Thur</day><type>pear</type></daily_fruit>';

xmlDoc = $.parseXML(xml),
  $xml = $(xmlDoc);
$($xml).each(function() {

  var showTimes = $xml.find('daily_fruit').each(function() {
    var $day = $(this).find('day').text();
    var $type = $(this).find("type").text();

    $("#daily_fruit").find('tbody')
      .append($('<tr>')
        .append($('<td>')
          .append($day))
      )
      .append($('<td>')
        .append($type))
  });
});

电流输出:

MonTuesWedThur
appleorangebananapear

期望的输出:

Mon  apple
Tues orange
Wed  banana
Thur pear

我想我很接近,但我就是想不通。

【问题讨论】:

    标签: javascript jquery html xml html-table


    【解决方案1】:

    鉴于这种 XML 结构,您应该改为遍历 &lt;day&gt; 元素。假设每个&lt;day&gt; 后面总是跟着对应的&lt;type&gt; 元素:

    var xml = '<daily_fruit><day>Mon</day><type>apple</type><day>Tues</day><type>orange</type><day>Wed</day><type>banana</type><day>Thur</day><type>pear</type></daily_fruit>';
    
    xmlDoc = $.parseXML(xml),
      $xml = $(xmlDoc);
    $($xml).each(function() {
    
       var showTimes = $xml.find('day').each(function() {
        var $day = $(this).text();
        var $type = $(this).next("type").text();
        $("#daily_fruit").find('tbody')
          .append($('<tr>')
            .append($('<td>')
              .append($day))
            .append($('<td>')
              .append($type))
          )
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table id="daily_fruit">
      <tbody>
    
      </tbody>
    </table>

    【讨论】:

      【解决方案2】:

      尝试修改您的 XML,使每个水果都在自己的标签内。然后,不要为每个循环查找“daily_fruit”标签,而是使用“fruit”标签。

      这是一个 jsfiddle: https://jsfiddle.net/57wgab88/

      var xml = '<daily_fruit><fruit><day>Mon</day><type>apple</type></fruit><fruit><day>Tues</day><type>orange</type></fruit><fruit><day>Wed</day><type>banana</type></fruit><fruit><day>Thur</day><type>pear</type></fruit></daily_fruit>';
      
      xmlDoc = $.parseXML(xml),
        $xml = $(xmlDoc);
      $($xml).each(function() {
      
        var showTimes = $xml.find('fruit').each(function() {
          var $day = $(this).find('day').text();
          var $type = $(this).find("type").text();
          $("#daily_fruit").find('tbody')
            .append($('<tr>')
              .append($('<td>')
                .append($day))
              .append($('<td>')
                .append($type))
            )
        });
      });
      

      【讨论】:

      • 完美! - 这是一个简单而优雅的答案。只要我有能力修改 XML 数据,在这种情况下,我可以做到。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2016-06-19
      • 2016-07-18
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多