7

我在一个函数中有这个代码,并想缩短它 - 它对数组中的每个项目应用相同的样式。

document.getElementById(divsArray[0]).style.visibility = 'hidden';
document.getElementById(divsArray[1]).style.visibility = 'hidden';
document.getElementById(divsArray[2]).style.visibility = 'hidden';
document.getElementById(divsArray[3]).style.visibility = 'hidden';

迄今为止没有答案(因为我正在循环通过代码??)

通过仅将先前显示的幻灯片可见性设置为隐藏来解决它

x = i;
i = i+1;

document.getElementById(divsArray[x]).style.visibility = 'hidden';
4

9 回答 9

8

如何使用循环:

for (var i = 0; i < 4; i++) {
    document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}
于 2010-08-18T15:07:30.003 回答
5

只是为了提供不同的东西,一个 jQuery 解决方案:

$(divsArray).each(function() {
  $(this).css("visibility", "hidden");
});

编辑:看起来你可能必须先收集你的 DOM 引用。(divsArray 实际上只是一个 div 名称数组,而不是 div 本身?)

$(divsArray).each(function() {
  $("#" + this).css({ "visibility": "hidden" });
});
于 2010-08-18T15:15:41.040 回答
4

在我看来,可能会有更多的 div... 我可以建议对 Darin 的代码进行此更改:

for (var i = 0; i < divsArray.length; i++) {
   document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}
于 2010-08-18T15:31:40.157 回答
4

以下是它在PrototypeMootools中的工作方式:

$(divsArray).each(function(item) {
  $(item).setStyle({visibility: "hidden"});
});
于 2010-08-18T15:45:39.963 回答
4

您可以将以下函数放在 divsArray 的相同/后代范围内。

function baka(idx) {
  document.getElementById(divsArray[idx]).style.visibility = 'hidden';
}

然后你可以做

baka(0);
baka(1);
baka(2);
baka(3);

或者

for (var i = 0; i < 4; i++)
  baka(i);

它看起来毫无意义,但如果你有更多这样的数组,你可能想像这样修改你的函数:

function aho(arr, idx) {
  document.getElementById(arr[idx]).style.visibility = 'hidden';
}

并遍历任何这样的数组:

for (var i = 0; i < divsArray.length; i++)
  aho(divsArray, i);

不,没有宏也没有模板。

于 2010-08-18T15:56:38.430 回答
2
for (i=0;i<4;i++) {
  document.getElementById(divsArray[i]).style.visibility='hidden';
}
于 2010-08-18T15:07:33.927 回答
1

只要我们都在堆积,我会采取最直接的方法:D

document.getElementById(divsArray[0]).style.visibility =
document.getElementById(divsArray[1]).style.visibility =
document.getElementById(divsArray[2]).style.visibility =
document.getElementById(divsArray[3]).style.visibility = 'hidden';

只是为了违背粮食:

var d = null, i = 0;
while (d = document.getElementById(divsArray[i++])) {
    d.style.visibility = 'hidden';
}
于 2010-08-18T17:06:32.087 回答
1

我无法“抗拒”挑战。我会说您将它们添加到相同的类并执行类似(原型示例)的操作:

$$('.className').invoke('setStyle', { 'visibility' : 'hidden' });
于 2010-08-18T19:43:53.490 回答
0

我们可以使用ES6 的Arrow Functions遍历包含ids 的数组:Array.prototype.forEach()

var elemIds = ['two', 'four', 'six'];

elemIds.forEach(id => {document.getElementById(id).style.visibility = 'hidden';});
<div id="one">One</div>
<div id="two">Two</div>
<div id="three">Three</div>
<div id="four">Four</div>
<div id="five">Five</div>
<div id="six">Six</div>
<div id="seven">Seven</div>

于 2017-11-15T13:09:01.310 回答