jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea

jQuery/Javascript foreach If/Else | If empty (do nothing) else (show foreach)

本文关键字:Else 任何 执行 forea 显示 操作 foreach Javascript If jQuery 如果      更新时间:2023-09-26

这个问题通过评论解决。工作解决方案张贴在下方

所以我得到了这段代码,我正在尝试调整它,因为它没有按照我希望的方式显示。

function writeRow(row) {
    var spans = '';
    for (var i = 0; i < num_of_fields; ++i) {
        // to do: append for select type field -> if select write: name, value, title
        // to do: add class "debug" to name, and for select tag value
        spans += '<div><span class="name"><b>' + field[i].name + ':</b></span> <span class="value">' + row[field[i].name] + '</span></div> ';
    }
    spans += ' <a href="#remove-row" class="remove">&#215;</a>';
    $('#outer-list').append($('<li id="row_' + row_id++ +'">').append(spans));
}

问题出在这条线上:

spans += '<div><span class="name"><b>' + field[i].name + ':</b></span> <span class="value">' + row[field[i].name] + '</span></div> ';

问题是,当.value <span>内的row[field[i].name]为空时,它仍然显示名称和空值字段。所以我想用if/else替换这行,比如如果.value <span>是空的,那么//do nothing就是CODE FROM ABOVE

由于我不会在不尝试自己解决问题的情况下提出问题,以下是我迄今为止所做的尝试,请记住,我将所有这些(如果有的话)都与上面的单行代码放在了同一位置!

尝试1

if $(row[field[i].name]).length == 0) {
  // Do nothing
} else {
  spans += '<div><span class="name"><b>' + field[i].name + ':</b></span> <span class="value">' + row[field[i].name] + '</span></div> ';
}

尝试2

if $(row[field[i].name]).val().trim().length == 0) {
  // Do nothing
} else {
  spans += '<div><span class="name"><b>' + field[i].name + ':</b></span>  <span class="value">' + row[field[i].name] + '</span></div> ';
}

尝试的顺序不正确,但文档中剩下的2个作为注释。我也尝试了其他一些东西,包括:empty,但我已经从注释部分删除了它们。

提前感谢您的帮助。如果有什么不清楚的地方,请告诉我。

在Mike C的帮助下尝试3次

var row_id = 0; // row counter
function writeRow(row) {
    var spans = '';
    for (var i = 0; i < num_of_fields; ++i) {
        // to do: append for select type field -> if select write: name, value, title
        // to do: add class "debug" to name, and for select tag value
        if row[field[i].name].length == 0) {
            // Do nothing
        } else {
            spans += '<div><span class="name"><b>' + field[i].name + ':</b></span> <span class="value">' + row[field[i].name] + '</span></div> ';
        }
    }
    spans += ' <a href="#remove-row" class="remove">&#215;</a>';
    $('#outer-list').append($('<li id="row_' + row_id++ +'">').append(spans));
}

我自己回答,因为我不想有太多问题没有答案,因为这可能会让我被屏蔽!不能那样。也要清楚,这个答案学分应该转到MikeC。但他从来没有将答案作为答案发布,只是作为评论。我请他和其他一些人一起发布一个答案,这样我们就可以接受。他从来没有这样做,所以我自己发布了他的答案。

Mike C的工作解决方案

var row_id = 0; // row counter
function writeRow(row) {
var spans = '';
for (var i = 0; i < num_of_fields; ++i) {
    // to do: append for select type field -> if select write: name, value, title
    // to do: add class "debug" to name, and for select tag value
    if (row[field[i].name].length == 0) {
        // Do nothing
    } else {
        spans += '<div><span class="name"><b>' + field[i].name + ':</b></span> <span class="value">' + row[field[i].name] + '</span></div> ';
    }
}
spans += ' <a href="#remove-row" class="remove">&#215;</a>';
$('#outer-list').append($('<li id="row_' + row_id++ +'">').append(spans));
}