У меня есть этот код в функции, и я хочу сократить его - он применяет один и тот же стиль к каждому элементу в массиве.
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';
Как насчет использования цикла:
for (var i = 0; i < 4; i++) {
document.getElementById(divsArray[i]).style.visibility = 'hidden';
}
Просто чтобы предоставить что-то другое, решение jQuery:
$(divsArray).each(function() {
$(this).css("visibility", "hidden");
});
Изменить: Похоже, вам, возможно, сначала придется собрать ваши ссылки на DOM. (divsArray - это действительно просто массив имен div, а не сами div?)
$(divsArray).each(function() {
$("#" + this).css({ "visibility": "hidden" });
});
Мне кажется, что может быть больше div ... Могу я предложить это изменение в коде Дарина:
for (var i = 0; i < divsArray.length; i++) {
document.getElementById(divsArray[i]).style.visibility = 'hidden';
}
И вот как это работает как в Prototype , так и в Mootools :
$(divsArray).each(function(item) {
$(item).setStyle({visibility: "hidden"});
});
Вы можете поместить следующую функцию в ту же / дочернюю область 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);
И нет, нет ни макросов, ни шаблонов.
пока мы все копаемся, я буду использовать самый прямой подход: 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';
}
Я не мог "устоять" перед вызовом. Я бы сказал, что вы добавляете им один и тот же класс и делаете что-то вроде (пример прототипа):
$$('.className').invoke('setStyle', { 'visibility' : 'hidden' });
for (i=0;i<4;i++) {
document.getElementById(divsArray[i]).style.visibility='hidden';
}