繁体   English   中英

jQuery / Javascript foreach如果/其他| 如果为空(不执行任何操作),否则(显示foreach)

[英]jQuery/Javascript foreach If/Else | If empty (do nothing) else (show 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> ';

问题是,当.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));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM