Javascript复制字符串的简写方法

时间:2010-08-18 15:06:01

标签: javascript arrays shorthand

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

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';

9 个答案:

答案 0 :(得分:8)

如何使用循环:

for (var i = 0; i < 4; i++) {
    document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}

答案 1 :(得分:5)

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

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

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

$(divsArray).each(function() {
  $("#" + this).css({ "visibility": "hidden" });
});

答案 2 :(得分:4)

听起来我可能会有更多的div ...我可能会建议对Darin的代码进行更改:

for (var i = 0; i < divsArray.length; i++) {
   document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}

答案 3 :(得分:4)

以下是PrototypeMootools的工作原理:

$(divsArray).each(function(item) {
  $(item).setStyle({visibility: "hidden"});
});

答案 4 :(得分: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);

不,没有宏,也没有模板。

答案 5 :(得分:2)

for (i=0;i<4;i++) {
  document.getElementById(divsArray[i]).style.visibility='hidden';
}

答案 6 :(得分: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';
}

答案 7 :(得分:1)

我无法“抵抗”挑战。我会说你将它们添加到同一个类中并执行类似(原型示例):

$$('.className').invoke('setStyle', { 'visibility' : 'hidden' });

答案 8 :(得分:0)

我们可以使用Array.prototype.forEach()和ES6的Arrow Functions迭代包含id的数组:

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>