Во-первых, есть функция, которая создаст уникальную функцию переключения для любого элемента, который вы ей даете.Затем мы ждем загрузки окна, а когда это происходит, мы создаем некоторые функции переключения.В этом примере мы предполагаем, что у вас есть элемент с id = 'some_id', но вы можете использовать все, что вам нужно, чтобы получить элемент.Затем мы вставляем функцию переключения в глобальную переменную.
// returns a function that will toggle the given element
function makeToggleFunction(el) {
var element = el;
return function() {
if (element.style.display == 'none')
element.style.display = 'block';
else
element.style.display = 'none';
};
}
window.addEventListener('load', on_window_load, false);
var GLOBAL = {};
function on_window_load() {
GLOBAL.toggle_element = makeToggleFunction(document.getElementById('some_id'));
}
Затем вы можете переключать элемент в любое время, когда вам нужно, с помощью GLOBAL.toggle_element()
.
Кроме того, я думаю, что это коддля IE, если вы хотите дождаться загрузки страницы.
document.addEventListener("DOMContentLoaded", on_window_load, false);
РЕДАКТИРОВАТЬ:
Добавить эту функцию (из http://www.dustindiaz.com/getelementsbyclass/, как указано вprogramatique)
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
И затем добавьте следующее в функцию on_window_load
:
GLOBAL.toggleable = new Array();
or each(var element in getElementsByClass('toggle')) {
GLOBAL.toggleable.push(makeToggleFunction(element));
}
GLOBAL.toggle_all = function() {
for each(var f in GLOBAL.toggleable) {
f.call();
}
};
И теперь вы можете вызвать GLOBAL.toggle_all()
, и он скроет все элементы, имеющие классtoggle
.