在JS返回函数中不为空或null



我有一个Javascript函数,我想检查多个if语句返回

如果值存在或者不为空,那么它应该返回一行信息,

我不知道该怎么做,我在想这样的事情,例如:

function format(d){
return '<table cellpadding="5" cellspacing="0" border="0">' +
if (name) {
'<tr>' +
'<td>Name:</td>' +
'<td>' + d.name + '</td>' +
'</tr>' } +
if (place)
'<tr>' +
'<td>Place:</td>' +
'<td>' + d.place + '</td>' +
'</tr>' } +
if (date) {
'<tr>' +
'<td>Date:</td>' +
'<td>' + d.date + '</td>' +
'</tr>' } +
'</table>'; 
}

就像Daniel指出的,你可以像这样构建字符串:

function  myFormat(d) {
let result = '<table cellpadding="5" cellspacing="0" border="0">';
if (name){
result += '<tr>' + '<td>Name:</td>' + '<td>' + d.name + '</td>' + '</tr>';
}
if (place){
result += '<tr>' + '<td>Place:</td>' + '<td>' + d.place + '</td>' + '</tr>'; 
}
if (date){
result += '<tr>' + '<td>Date:</td>' + '<td>' + d.date + '</td>' + '</tr>'; 
}
result += '</table>';
return result;
}

Html元素也可以组合在一起,这样更简单:

'<tr><td>Place:</td><td>' + d.name + '</td></tr>'

我看到您可以为row创建一个模板。为什么不使用一个单独的函数:

formatRow(value, label)

'formatRow'函数可以使用if语句检查value是否为空,并决定返回一行或空字符串进行连接。

function formatRow(value, label){
if(value) {
return '<tr>' +
'<td>' + label + '</td>' +
'<td>' + value + '</td>' +
'</tr>';
}
return '';
}

然后在format()函数中为每个想要使用的属性运行它。

function createCell(text){
const td = document.createElement('td');
td.textContent=text;
return td
}
function createRow(data, key){
row = document.createElement('tr');
row.appendChild(createCell(key[0].toUpperCase() + key.substring(1) + ':' ))
row.appendChild(createCell(data[key]))
return row; 
}
function format(d){
table = document.createElement('table');
table.setAttribute("cellpadding", "5");
table.setAttribute("border", "0");
table.setAttribute("cellspacing", "0");
Object.keys(d).forEach(key => table.appendChild(createRow(d, key)))
return table
}
document.body.appendChild(format({data: '5 feb 2021', name: 'John', place: 'New York' }))   
document.write('<hr>')
document.body.appendChild(format({data: '5 feb 2021', name: 'John' }))   
document.write('<hr>')
document.body.appendChild(format({data: '5 feb 2021' }))

相关内容

最新更新