1

我正在拉入一些远程 xml 并对其进行解析。该数据填充了一个表,我似乎无法更新它。使用 setTimeout,我可以使用 .append() 继续添加到表中 - 不使用新数据替换旧数据,或者在应该有多个使用 jQuery 的 .html() 操作时只能显示一行。

$(function () {
    site = 'http://ec2-54-201-216-39.us-west-2.compute.amazonaws.com/testc/WebService.asmx/GetLastTickers';
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + site + '"') + '&format=xml&callback=?';
function btcData() {
    $.getJSON(yql, function (data) {
    var xml = $.parseXML(data.results[0]),
    xmlDoc = $.parseXML($(xml).find("string").text()),
    $xml = $(xmlDoc);
    $xml.find("Ticker").each(function(){
        var buyPrice = $(this).find("BuyPrice").attr("Value");
        var sellPrice = $(this).find("SellPrice").attr("Value");
        var volume = $(this).find("Volume").attr("Value");
        var tr = $('<tr/>');
        tr.append("<td data-th=\'Buy Price\'>" + buyPrice + "</td>");
        tr.append("<td data-th=\'Sell Price\'>" + sellPrice + "</td>");
        tr.append("<td data-th=\'Volume\'>" + volume + "</td>");
        //using the first option will only show one row, but update
        //$('#BuyOrders').html(tr)
        $('#BuyOrders').append(tr);
    });
    //this will keep adding to table
    setTimeout(btcData, 1000);
    });
    }
    btcData();
});

我在这里有一个工作小提琴。xml 中的数据可以从“站点”变量中查看。我想让它更新表格,就像 .append() 版本一样,但不是添加到它,而是每次都覆盖它。1 秒仅用于演示。

4

2 回答 2

1

你可以这样做

$('#BuyOrders').html('');
$xml.find("Ticker").each(function(){
    var buyPrice = $(this).find("BuyPrice").attr("Value");
    var sellPrice = $(this).find("SellPrice").attr("Value");
    var volume = $(this).find("Volume").attr("Value");
    var tr = $('<tr/>');
    tr.append("<td data-th=\'Buy Price\'>" + buyPrice + "</td>");
    tr.append("<td data-th=\'Sell Price\'>" + sellPrice + "</td>");
    tr.append("<td data-th=\'Volume\'>" + volume + "</td>");
    $('#BuyOrders').append(tr);
});

所以你在添加新数据之前删除表中的数据

希望我能帮助

于 2014-04-30T13:05:52.440 回答
1

这是小提琴jsfiddle

 function btcData() {
   $('#BuyOrders').html("");
   $.getJSON(yql, function (data) {
    var xml = $.parseXML(data.results[0]),
    xmlDoc = $.parseXML($(xml).find("string").text()),
    $xml = $(xmlDoc);
    $xml.find("Ticker").each(function(){
         var buyPrice = $(this).find("BuyPrice").attr("Value");
    var sellPrice = $(this).find("SellPrice").attr("Value");
    var volume = $(this).find("Volume").attr("Value");
    var tr = $('<tr/>');
    tr.append("<td data-th=\'Buy Price\'>" + buyPrice + "</td>");
    tr.append("<td data-th=\'Sell Price\'>" + sellPrice + "</td>");
    tr.append("<td data-th=\'Volume\'>" + volume + "</td>");
     $('#BuyOrders').append(tr);
        });
     //this will keep adding to table 
        setTimeout(btcData, 1000);
    });
  }
于 2014-04-30T13:13:37.420 回答