Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:仅显示新的JSON数据,并使用自己的段落标记进行迭代_Javascript_Jquery_Json - Fatal编程技术网

Javascript jQuery:仅显示新的JSON数据,并使用自己的段落标记进行迭代

Javascript jQuery:仅显示新的JSON数据,并使用自己的段落标记进行迭代,javascript,jquery,json,Javascript,Jquery,Json,仅显示JSON数据的新更新,使用jQuery/javascript在其自己的段落标记中使用每个值项进行迭代 如果info键内的数组中的每个项都已在其自己的标记中输出;不要继续循环,但要等到有新项目时再循环 这是我的JSON: { "info": [ "Hello world,", "how are you doin?", "Its not going to well for me unfortunately." ] } 使用此jQuery脚本: function

仅显示JSON数据的新更新,使用jQuery/javascript在其自己的段落标记中使用每个值项进行迭代

如果
info
键内的数组中的每个项都已在其自己的
标记中输出;不要继续循环,但要等到有新项目时再循环

这是我的JSON:

{
  "info": [
    "Hello world,",
    "how are you doin?",
    "Its not going to well for me unfortunately."
  ]
}
使用此jQuery脚本:

function updatelog() {
 $.getJSON("/static/_info",
  function(data) {
   $.each(data, function(key, item) {
    var value = "";
    var i;
    for (i = 0; i < item.length; i++) {
     value += item[i];
     $("div").add('<p>' + value + '</p>').appendTo(document.body);
    }
   });
  });
}
var interval = window.setInterval(updatelog, 2000);
函数updatelog(){
$.getJSON(“/static/\u info”,
功能(数据){
$。每个(数据、功能(键、项){
var值=”;
var i;
对于(i=0;i”).appendTo(document.body);
}
});
});
}
var interval=window.setInterval(updatelog,2000);

通过这个,我得到了所有的项目,但它并没有停止迭代。我在互联网上搜索了这么多,以至于我的回车键已经失去了拯救的希望。我想这很容易,但我是一个初学者,也不是javascript程序员,我已经准备好了。提前感谢。

您可以获取所有
p
元素的文本并将其推送到新数组中,然后检查它是否包含来自对象的值

var data=JSON.parse(“{”info“:[“你好,世界”,“你好吗?”,“很不幸,这对我来说不太好。”]}),
pText=[];
$('p')。每个(函数(){
push($(this.text());
});
data.info.forEach(函数(el){
如果(!pText.包括(el)){
$('body')。追加(''+el+'

'); } })


你好,world,

您可以从每个列表项生成一个哈希,并将其用作div元素中的id。每次检索数据时,都会检查相应的id是否存在。如果该项存在,则该项已存在于您的页面中,因此您无需再次追加该项

function updatelog() {
    $.getJSON("/static/_info",
    function(data) {
        $.each(data, function(key, item) {
            var i;
            for (i = 0; i < item.length; i++) {
                var value = item[i];
                var hashCode = value.hashCode();
                if(!$("body").find("#" + hashCode).length){
                    $("div")
                    .attr("id", hashCode)
                    .add('<p>' + value + '</p>')
                    .appendTo(document.body);
                }
            }
        });
    });
}
var interval = window.setInterval(updatelog, 2000);

可能重复的好主意!但是,我得到了一个错误:
document.body.find不是一个函数
。我认为这与它是一个DOM/javascript函数而不是jQuery有关。我说得对吗?我尝试使用
$.find()
执行此操作,虽然没有收到错误消息,但它没有停止迭代。我将使用@Nenad提供的更简单的解决方案,这是我真正需要的。不过还是要谢谢你,我会再花点时间处理这个问题。@fivethous因为打字太快而犯了一个错误。我已经更正了选择器
$(“body”)。很遗憾,它仍然没有停止迭代。我一次又一次地得到相同的值,每个值都在自己的段落中。
String.prototype.hashCode = function() {
    var hash = 0, i, chr, len;
    if (this.length === 0) return hash;
    for (i = 0, len = this.length; i < len; i++) {
        chr   = this.charCodeAt(i);
        hash  = ((hash << 5) - hash) + chr;
        hash |= 0; // Convert to 32bit integer
    }
    return hash;
};