D'abord, il y a une fonction qui va créer une fonction de basculement unique pour tout élément que vous lui donnez. Ensuite, nous attendons le chargement de la fenêtre, et quand c'est le cas, nous créons des fonctions à bascule. Dans cet exemple, nous supposons que vous avez un élément avec id = 'some_id', mais vous pouvez utiliser tout ce dont vous avez besoin pour obtenir un élément. Ensuite, nous plaçons la fonction Toggle dans une variable globale.
// 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'));
}
Vous pouvez ensuite basculer l'élément à chaque fois que vous avez besoin, avec GLOBAL.toggle_element()
.
Aussi, je pense que c'est le code pour IE si vous voulez attendre le chargement de la page.
document.addEventListener("DOMContentLoaded", on_window_load, false);
EDIT:
Ajouter cette fonction (de http://www.dustindiaz.com/getelementsbyclass/ comme mentioed par 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;
}
Et puis ajoutez ce qui suit dans la fonction 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();
}
};
Et maintenant vous pouvez appeler GLOBAL.toggle_all()
et il va cacher tous les éléments qui ont la classe toggle
.
ce que vous voulez de nous? – Rihards
Ah, vous avez ajouté la nouvelle exigence indiquant qu'il n'y avait pas d'inline pendant que je posais ma réponse. Je mettrai à jour ma réponse avec une solution qui n'utilise pas de javascript en ligne. – Jeff
pourquoi pas de javascript intégré ??? – galambalazs