Jquery .每个人的行为都不符合预期
我有一个函数,它接受推送通知中的数据并将其格式化为json,如下所示:Jquery .每个人的行为都不符合预期,jquery,twitter-bootstrap,Jquery,Twitter Bootstrap,我有一个函数,它接受推送通知中的数据并将其格式化为json,如下所示: { "sent": "02/17/2017", "title": "Some Entry", "body": "The main message here", "picture": "http://example.com/me.jpg", "phone": "555 641-6547" }, { "sent": "02/13/2017", "title": "Some
{
"sent": "02/17/2017",
"title": "Some Entry",
"body": "The main message here",
"picture": "http://example.com/me.jpg",
"phone": "555 641-6547"
}, {
"sent": "02/13/2017",
"title": "Some Other Stuff",
"body": "Main content here",
"link": "http://mycom.com",
"phone": "555 555-6200"
}
如您所见,它们可能有也可能没有所有可用的名称/值对
该代码用于在模式弹出窗口上显示引导程序:
function show8(arr) {
alert('here ** ' + arr); // lets you see incoming data
arr = '[' + arr + ']';
var i = 50 ;
var out = '';
out += '<div class="panel-group no_wrap widget uib_w_' + i + ' d-margins" data-uib="twitter%20bootstrap/accordion" data-ver="1" ';
i++ ;
out += 'id="bs-accordion-11">';
$.each(JSON.parse(arr), function(idx, obj) {
out += '<div class="panel widget uib_w_' + i + ' panel-info" data-uib="twitter%20bootstrap/collapsible" data-ver="1">';
i++ ;
out += '<div class="panel-heading"><h4 class="panel-title">';
out += '<a class="accordion-toggle" data-toggle="collapse" href="#bs-accordion-group-' + i + '" data-parent="#bs-accordion-11">';
out += '<small>' + obj.sent + '</small><br><strong><big>' + obj.title + '</strong></big><br>';
out += '</a></h4></div>';
out += '<div id="bs-accordion-group-' + i + '" class="panel-collapse collapse">';
i++ ;
out += '<div class="panel-body"><div class="col uib_col_' + i + ' single-col" data-uib="layout/col" data-ver="0">';
i++ ;
out += '<div class="widget-container content-area vertical-col">';
/*
if (obj.picture.length > 0 ) {
out += '<div class="widget uib_w_' + i + ' scale-image d-margins" data-uib="media/img" data-ver="0">';
i++ ;
out += '<figure class="figure-align"><img src="' + obj.picture + '"></figure></div>';
}
*/
out += '<p>' + obj.body + '</p><br><br>';
/*
if (obj.phone.length > 0) {out += 'Call: <br><button class="btn widget uib_w_' + i + ' d-margins btn-xs btn-primary" ';
out += 'data-uib="twitter%20bootstrap/button" data-ver="1" ';
out += 'onclick= "placeCall(\'' + obj.phone + '\')">' + obj.phone + '</button><br>';}
i++;
if (obj.link.length > 0) {out += 'Website: <br><button class="btn widget uib_w_' + i + ' d-margins btn-xs btn-primary" ';
out += 'data-uib="twitter%20bootstrap/button" data-ver="1" ';
out += 'onclick= "viewPage(\'' + obj.link + '\')">' + obj.link + '</button><br>';}
i++;
*/
out += '<span class="uib_shim"></span></div></div></div></div></div>';
});
out += '</div>';
$(".recent").html(out);
$(".uib_w_8").modal("toggle");
}
功能显示8(arr){
警报('here**'+arr);//用于查看传入数据
arr='['+arr+']';
var i=50;
var out='';
out+='';
$.each(JSON.parse(arr)、函数(idx、obj){
out+='';
i++;
out+='';
out+='';
out+='';
i++;
out+='';
i++;
out+='';
/*
如果(obj.picture.length>0){
out+='';
i++;
out+='';
}
*/
out+=''+obj.body+'
';
/*
如果(obj.phone.length>0){out+='Call:
'+obj.phone+'
';}
i++;
如果(obj.link.length>0){out+='网站:
'+obj.link+'
';}
i++;
*/
out+='';
});
out+='';
$(“.recent”).html(out);
$(“.uib_w_8”).模式(“切换”);
}
如果取消注释任何已注释掉的代码,列表将弹出并无法显示。if(val.length>0)识别出该值存在并且它有内容,但不会显示内容
我在这里遗漏了什么?这将失败,因为没有图片键:
if(obj.picture.length>0){
如果您在控制台中查看,您将看到如下内容:
无法读取未定义的长度
将其更改为:
if((obj.picture)和&(obj.picture.length>0)){
与此相同:
if(obj.link.length>0){
obj.link
并不总是存在,请将其更改为
if((obj.link)和&(obj.link.length>0)){
列表会弹出这是什么意思?控制台中有错误吗?如果有,有什么错误?抱歉,它无法显示整个列表为什么要这样做?JSON.parse(arr)
您是否在其他地方对其进行了字符串化?如果(obj.picture.length>0)没有图片键,此操作将失败{
将其更改为:如果((obj.picture)&&&(obj.picture.length>0)){
-同样,链接并不总是存在如果(obj.link.length>0){
是的,数据是经过严格处理的。我在这个android设备上没有控制台,所以我错过了现场表演的那一部分!我会尝试一下,然后很快给你回复。谢谢。总是最简单的事情会让你绊倒,然后当一切都暴露出来时,让你觉得自己很愚蠢!长度测试应该看看是否存在。那么为什么不呢请直接问这个问题。是的,我是一个新手,虽然我断断续续地在js工作了二十年!我根本没有意识到if(obj.picture)是布尔型的。--谢谢你,Darren Sweeney!欢迎Ed,很高兴它有帮助-使用对象很有趣,但小心处理哈哈