我只是想知道是否有写这段代码的简写方法:
allJobs[0].style.display = 'none';
allJobs[1].style.display = 'none';
allJobs[3].style.display = 'none';
我试过这种方式,但它只隐藏了最后一个值而不是之前的值:
allJobs[0, 1, 3].style.display = 'none';
我真的不能使用经典的for循环解决方案,我不认为因为某些数组元素被跳过并显示出来。 谢谢。
修改 我有超过3个显示nones我只是想让问题变得简单,我不是懒得写3行!
答案 0 :(得分:6)
[0, 1, 3].forEach(function(d) {
allJobs[d].style.display = 'none';
});
虽然可以肯定的是,只有三个元素,这不会短得多......
答案 1 :(得分:4)
虽然其他示例将支持更新的浏览器,但这应该是全面的:
var indexes = [0, 1, 3];
for(var i = 0; i < indexes.length; i++) {
allJobs[indexes[i]].style.display = 'none';
}
答案 2 :(得分:1)
以下是我如何做到这一点:
function setHidden() {
for (var i = 0; i < arguments.length; i++) allJobs[arguments[i]].style.display = 'none';
}
setHidden(0, 1, 3);
这种特殊方法避免了对每个元素进行昂贵的函数调用(如Array.forEach
)。
答案 3 :(得分:1)
这是另一种方法:
function setStyle(element, cssAttrib, cssValue) {
element.style[cssAttrib] = cssValue;
}
var indexes = [ 0, 1, 3 ];
for ( var i = indexes.length-1; i > -1; i-- ) // Loop Backwards For Constant Comparison
{
setStyle(allJobs[i], "display", "none");
}
请注意,调用setStyle会导致类似于forEach方法的函数调用惩罚。如果性能是一个问题,您可以考虑内联您的样式更改。
var indexes = [ 0, 1, 3 ];
for ( var i = indexes.length-1; i > -1; i-- ) // Loop Backwards For Constant Comparison
{
allJobs[i].style.display = none;
}