Сокращенный способ Javascript для дублирования строк

У меня есть этот код в функции, и я хочу сократить его - он применяет один и тот же стиль к каждому элементу в массиве.

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';
7
задан Mohammad Usman 15 November 2017 в 13:10
поделиться

8 ответов

Как насчет использования цикла:

for (var i = 0; i < 4; i++) {
    document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}
8
ответ дан 6 December 2019 в 06:13
поделиться

Просто чтобы предоставить что-то другое, решение jQuery:

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

Изменить: Похоже, вам, возможно, сначала придется собрать ваши ссылки на DOM. (divsArray - это действительно просто массив имен div, а не сами div?)

$(divsArray).each(function() {
  $("#" + this).css({ "visibility": "hidden" });
});
5
ответ дан 6 December 2019 в 06:13
поделиться

Мне кажется, что может быть больше div ... Могу я предложить это изменение в коде Дарина:

for (var i = 0; i < divsArray.length; i++) {
   document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}
4
ответ дан 6 December 2019 в 06:13
поделиться

И вот как это работает как в Prototype , так и в Mootools :

$(divsArray).each(function(item) {
  $(item).setStyle({visibility: "hidden"});
});
4
ответ дан 6 December 2019 в 06:13
поделиться

Вы можете поместить следующую функцию в ту же / дочернюю область 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);

И нет, нет ни макросов, ни шаблонов.

4
ответ дан 6 December 2019 в 06:13
поделиться

пока мы все копаемся, я буду использовать самый прямой подход: 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';
}
1
ответ дан 6 December 2019 в 06:13
поделиться

Я не мог "устоять" перед вызовом. Я бы сказал, что вы добавляете им один и тот же класс и делаете что-то вроде (пример прототипа):

$$('.className').invoke('setStyle', { 'visibility' : 'hidden' });
1
ответ дан 6 December 2019 в 06:13
поделиться
for (i=0;i<4;i++) {
  document.getElementById(divsArray[i]).style.visibility='hidden';
}
2
ответ дан 6 December 2019 в 06:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: