如果数组元素为空,则删除双<br/>

时间:2014-04-24 18:50:11

标签: javascript jquery html

我有一个类似于:

的数组
var Arr = [
    { forname: 'John', surname: 'Doe', email: 'johndoe@gmail.com', website: 'www.johndoe.com', phone: '0123456789', img: 'img/johndoe.jpg' },
    { forname: 'Jane', surname: 'Doe', email: '', website: 'www.janedoe.com', phone: '0123456789', img: 'img/janedoe.jpg' },
          ]

我所做的是用id="#caption"

填充div
$('#caption').html(e[f].forname + ' ' + e[f].surname + '<br>' + e[f].email + '<br>' + e[f].website + '<br>' + e[f].phone);

ef是通过函数传递的参数,它们选择每个数组对象。我现在遇到的问题是,当我在标题div中得到两者的数据时,它看起来像:

THIS

因为Jane Doe没有电子邮件地址。我不知道谁和哪些领域有价值。我想要做的是,没有值的字段会删除双<br>

谢谢!

4 个答案:

答案 0 :(得分:1)

你可以使用一些技巧

[
  e[f].forname+" "+e[f].surname,
  e[f].email,
  e[f].website,
  e[f].phone
].filter(function(n){ return n != undefined && n != ''; }).join('<br/>');

将跳过任何空值,并且不会添加双重

答案 1 :(得分:1)

尝试而不是使用<br>块(表示换行符的位置)使用<div> s(表示行的位置)。与<p> aragraph类似,由于默认的display: block属性,它们各自使用一行,但默认格式属性较少。

答案 2 :(得分:0)

而不是

+ e[f].email + '<br>' +

+ (e[f].email ? e[f].email + '<br>' : '') + 

仅当有电子邮件时才会插入email + '<br>'

为所有字段执行此操作。编辑

$('#caption').html(
  e[f].forname + ' ' + (e[f].surname ? e[f].surname + '<br>' : '') +
  (e[f].email ? e[f].email + '<br>' : '') +
  (e[f].website ? e[f].website + '<br>' : '')
  (e[f].phone ? e[f].phone + '<br>' : ''
);

答案 3 :(得分:0)

如果是空字符串:

$('#caption').html(e[f].forname + ' ' + e[f].surname + '<br>' + e[f].email + (( e[f].email=="")?"":'<br>') + e[f].website + '<br>' + e[f].phone);

(如果它为null,则可以检查四个空值)

只检查它是否为空并且是否为空 - &gt;不要放<br>

只需使用tenary operator