jQuery / Javascript foreach If / Else |如果为空(什么也不做)别的(显示foreach)

时间:2016-05-10 18:22:05

标签: javascript jquery if-statement foreach

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

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

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> ';

问题是当row[field[i].name]内的.value <span>为空时,它仍会显示名称和空值字段。 因此,如果.value <span>为空,我想用if / else替换该行,然后//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> ';
}

尝试的顺序不正确,但是文档中留下的那些作为评论我尝试了其他一些内容,包括: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));
}

1 个答案:

答案 0 :(得分:0)

我自己回答,因为我不想有太多问题没有答案,因为它可能会让我被阻止!不能那样。很清楚这个答案学分应该归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));
}