【发布时间】:2016-05-10 18:22:05
【问题描述】:
此问题已通过评论解决。工作解决方案发布在下面
所以我得到了这段代码,我正在尝试调整它,因为它没有按照我希望的方式显示。
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">×</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 替换该行,例如 if .value <span> is empty then //do nothing else CODE FROM ABOVE。
因为我不会在不尝试自己解决问题的情况下提出问题,所以这是我迄今为止所做的尝试,请记住,我将所有这些 if else 放在与单行代码相同的位置以上!
尝试 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> ';
}
这些尝试的顺序不正确,而是那些作为 cmets 留在文档中的 2 我尝试了其他一些事情,包括 :empty,但我已经从 cmets 部分删除了它们。
提前感谢您的帮助。如果有什么不清楚的地方请告诉我。
在 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">×</a>';
$('#outer-list').append($('<li id="row_' + row_id++ +'">').append(spans));
}
【问题讨论】:
-
你为什么将它包装在一个 jQuery 函数中? jQuery 将尝试检索 DOM 中与您的查询匹配的元素。直接查看
row[field[i].name]就行了…… -
它的意思正是它看起来的意思。 JS 不需要你对 jQuery 做任何事情。不要这样做
$(row[field[i].name])。只需使用row[field[i].name]。 -
打开您的控制台并检查错误。 (Windows 上 F12,Mac 上 Cmd + Opt + I)
-
您有语法错误。更新您的问题以包含您最近的尝试,以便我查看错误所在。
-
您缺少一个左括号。将
if row[field[i].name].length == 0)更改为if (row[field[i].name].length == 0)。if语句后面总是需要括号。
标签: javascript jquery if-statement foreach