Javascript jQuery:仅显示新的JSON数据,并使用自己的段落标记进行迭代
仅显示JSON数据的新更新,使用jQuery/javascript在其自己的段落标记中使用每个值项进行迭代 如果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
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;
};