编辑:只是为了澄清,因为zer00ne发现这是最初缩小的代码,我为了修改它而“美化”。抱歉不要早点说清楚。
原创for循环,有效:
m = 0;
for (k = b.header.length; m < k; m++) d.appendChild(p(e, "col", {
attr: {
min: m + 1,
max: m + 1,
width: N(b, m),
customWidth: 1
}
}));
我想做什么,但不起作用:
m = 0;
for (k = b.header.length; m < k; m++) d.appendChild(p(e, "col", {
if (m==6) {
attr: {
min: m + 1,
max: m + 1,
width: 100,
style: 2,
customWidth: 1
}
} else {
attr: {
min: m + 1,
max: m + 1,
width: N(b, m),
customWidth: 1
}
}
}));
我理解if语句在错误的地方w.r.t.函数d.appendChild,但我不确定如何将for循环与函数分开,以便将if语句放在正确的位置。最后,这种for循环/函数混合的风格是什么?
帮助?
答案 0 :(得分:4)
它不是关于for
循环,而是关于在对象文字中使用if
的可能性。简而言之,没有。
您可能会做的是扩展基于条件的特定参数,如下所示:
var m = 0;
var attr;
for (var k = b.header.length; m < k; m++) {
attr = {
min: m + 1,
max: m + 1,
customWidth: 1
};
if (m === 6) {
attr.style = 2;
attr.width = 100;
}
else {
attr.width = N(b, m);
}
d.appendChild(p(e, 'col', { attr: attr }));
}
这种方法是干的:两种情况共同的属性被指定一次(因此更容易修改它们)。
你是否只使用过一个不同的参数,还有另一种方法可以做到这一点 - 使用三元:
attr = {
min: m + 1,
max: m + 1,
width: m === 6 ? 100 : N(b, m),
customWidth: 1
};
不过,还有另外一件事要考虑:6
是什么?任何读者都不清楚 - 包括你几个月(甚至几周,取决于代码库的大小)。
答案 1 :(得分:1)
打开for循环,然后将if放入内部,并将appendChild放在if语句中:
for (<stuff>) {
if (<expression>) {
d.appendChild(<stuff>);
}
}
答案 2 :(得分:0)
您已将if条件作为参数放入d.appendChild。那不行:
m = 0;
for (k = b.header.length; m < k; m++) {
if (m==6) {
d.appendChild(p(e, "col", {
attr: {
min: m + 1,
max: m + 1,
width: 100,
style: 2,
customWidth: 1
}
}));
} else {
d.appendChild(p(e, "col", {
attr: {
min: m + 1,
max: m + 1,
width: N(b, m),
customWidth: 1
}
}));
}
}