2017-08-24 466 views
0

我正在寻找覆盖使用JS的div,但问题是,我使用append所以脚本不断写入数据在div的末尾,我不知道如何解决这个问题,我尝试了window.location.reload(true),但显然数据丢失了。 有人可以指向我正确的方向,实际上我迷路了。我的目标是刷新/擦除或更新div内容,最好是重新加载页面。这是一个可运行的代码,所以你可以看到问题。感谢您的帮助。使用JS和foreach循环/覆盖覆盖一个div

$("#getnews").on("click", function() { 
 
    setTimeout(function() { 
 

 
    var path = "https://api.iextrading.com/1.0/stock/" 
 
    var stock = document.getElementById('userstock').value 
 
    var end = "/news" 
 

 
    var url = path + stock + end 
 

 
     $.getJSON(url, function(data) { 
 
      data.forEach(function (article) { 
 
       $('#data').append(
 
        $('<h4>').text(article.headline), 
 
        $('<div>').text(article.summary), 
 
        $('<hr>').text(" "), 
 
       ); 
 

 

 
      }); 
 
     }); 
 
},200); 
 

 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 
 

 

 

 
<div class="container"> 
 
<p>Search for a stock (E.g: msft, aapl or tsla)</p> 
 
<p><input type="text" id="userstock"></p> 
 
<p><a class="btn btn-dark btn-large text-white" id="getnews">Browse</a></p> 
 
<row id="data"></row> 
 
</div> 
 

 
<script src="https://code.jquery.com/jquery-3.2.1.js" 
 
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" 
 
crossorigin="anonymous"></script>

+0

你可能只是实际覆盖DIV'data'而不是追加它... –

+0

可能重复[如何使用jQuery替换div的innerHTML?](https://stackoverflow.com/questions/1309452/how-to-replace-innerhtml-of-a-div-using-jquery) – scrappedcola

+0

@scrappedcola我试过.empty()。append(newcontent)不起作用。我只有第一行.. – Blacksun

回答

3

$("#getnews").on("click", function() { 
 
    setTimeout(function() { 
 

 
    var path = "https://api.iextrading.com/1.0/stock/" 
 
    var stock = document.getElementById('userstock').value 
 
    var end = "/news" 
 

 
    var url = path + stock + end 
 

 
     $.getJSON(url, function(data) { 
 
      var html = $("<div></div>"); 
 

 
      data.forEach(function (article) { 
 
       html.append($('<h4>').text(article.headline)); 
 
       html.append($('<div>').text(article.summary)); 
 
       html.append($('<hr>').text(" "));     
 
      }); 
 

 
      $('#data').html(html); 
 
     }); 
 
},200); 
 

 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 
 

 

 

 
<div class="container"> 
 
<p>Search for a stock (E.g: msft, aapl or tsla)</p> 
 
<p><input type="text" id="userstock"></p> 
 
<p><a class="btn btn-dark btn-large text-white" id="getnews">Browse</a></p> 
 
<row id="data"></row> 
 
</div> 
 

 
<script src="https://code.jquery.com/jquery-3.2.1.js" 
 
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" 
 
crossorigin="anonymous"></script>

+0

@ comatc2非常感谢,但它只打印1行:)我讨厌代码。 – Blacksun

+0

@Blacksun Doh!对不起 - 尝试更新的版本。 – combatc2

0

你就不能置容器中的HTML:

var html = $("<div></div>"); 
html.append($('<h4>').text(article.headline)); 
html.append($('<div>').text(article.summary)); 
html.append($('<hr>').text(" ")); 

$('#data').html(html); 
+0

您是否尝试过这种方法这不是我的工作,或者我不知道如何包含它,也没有得到这背后的逻辑。谢谢反正。@ combatc2 – Blacksun

+0

看到我上面发布的新答案(它包括你原来的代码片段我建议的更新) – combatc2