Template-info.svg Documentation de modèle (parfois caché ou invisible)

Outils modèle: Actualiser


This template has to be use in parallel with toggling functions. It will only create the element that will be hidden/shown by the function.


This template uses the following JavaScript codes:

 /* Test if an element has a certain class **************************************
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: User:Mike Dillon, User:R. Koot, User:SG
var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
function getElementsByClass (node, className, tagName) {
	if (node.getElementsByClassName && (tagName == undefined || tagName == null || tagName == '*')) return node.getElementsByClassName(className);
	var list = node.getElementsByTagName(tagName?tagName:'*');
	var array = new Array();
	var i = 0;
	for (i in list) {
		if (hasClass(list[i], className))
	return array;
/* Creates the method getElementsByClass, if unsupported from the browser */
if(!document.getElementsByClass) document.getElementsByClass = function(className) {
	return getElementsByClass(document, className, '*');
function getElementsByName (name, root) {
 if (root == undefined) root = document;
 var e = root.getElementsByTagName('*');
 var r = new Array();
 for (var i = 0; i < e.length; i++) {
	if (e[i].getAttribute('name') == name) r[r.length] = e[i];
 return r;


/* Any JavaScript here will be loaded for all users on every page load. */
        Toggles the display of elements on a page 
        Author/contact: Austin Che http://openwetware.org/wiki/User:Austin_J._Che
        See http://openwetware.org/wiki/OpenWetWare:Toggle for examples and documentation
// indexed array of toggler ids to array of associated toggle operations
// each operation is a two element array, the first being the type, the second a class name or array of elements
// operation types are strings like "_reset" or "" for the default toggle operation
var togglers = new Array();     
var allClasses = new Object(); // associative map of class names to page elements
function toggler(id)
    var toBeToggled = togglers[id];
    if (!toBeToggled)
    // if some element is in list more than once, it will be toggled multiple times
    for (var i = 0; i < toBeToggled.length; i++)
        // get array of elements to operate on
        var toggles = toBeToggled[i][1];
        if (typeof(toggles) == "string")
            if (toggles.charAt(0) == '-')
                // treat as an element ID, not as class
                toggles = document.getElementById(toggles.substring(1));
                if (toggles)
                    toggles = new Array(toggles);
                toggles = allClasses[toggles];
        if (!toggles || !toggles.length)
        var op = toBeToggled[i][0]; // what the operation will be
        switch (op)
            case "_reset":
                for (var j in toggles)
                    toggles[j].style.display = toggles[j]._toggle_original_display;
            case "_show":
                for (var j in toggles)
                    toggles[j].style.display = '';
            case "_hide":
                for (var j in toggles)
                    toggles[j].style.display = 'none';
            case "":
                // Toggle
                for (var j in toggles)
                    toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none');
function createTogglerLink(toggler, id)
    var toggle = document.createElement("a");
    toggle.className = 'toggler-link';
    toggle.setAttribute('id', 'toggler' + id);
    toggle.setAttribute('href', 'javascript:toggler("' + id + '");');
    var child = toggler.firstChild;
    toggler.insertBefore(toggle, toggler.firstChild);
function toggleInit()
    var togglerElems = new Array();
    var toggleGroup = new Array();
    // initialize/clear any old information
    togglers = new Array();     
    allClasses = new Object();
    allClasses.watch = undefined;
    allClasses.unwatch = undefined;
    // make list of all document classes
    var elems = document.getElementsByTagName("*");
    var numelems = elems.length;
    for (var i = 0; i < elems.length; i++)
        var elem = elems[i];
        if (!elem.className)
        elem._toggle_original_display = elem.style.display;
        var togglerID = -1;
        var elemClasses = elem.className.split(' '); // get list of classes
        for (var j = 0; j < elemClasses.length; j++)
            var elemClass = elemClasses[j];
            if (! allClasses[elemClass])
                allClasses[elemClass] = new Array();
            // all the special classes begin with _toggle
            if (elemClass.substring(0, 7) != "_toggle")
            if (elemClass == "_togglegroup")
                toggleGroup = new Array();
            else if (elemClass == "_toggle")
            else if (elemClass.substring(0, 12) == "_toggle_init")
                // set initial value for display (ignore the original CSS set value)
                // understands _toggle_initshow and _toggle_inithide
                var disp = elemClass.substring(12);
                if (disp == "show")
                    elem.style.display = '';
                else if (disp == "hide")
                    elem.style.display = 'none';
                elem._toggle_original_display = disp;
            else if (elemClass.substring(0, 8) == "_toggler")
                if (togglerID == -1)
                    togglerID = togglers.length;
                    togglers[togglerID] = new Array();
                    togglerElems[togglerID] = elem;
                // all classes are of form _toggler_op-CLASS
                // figure out what class we're toggling
                // if none is specified, then we use the current toggle group
                var toBeToggled;
                var hyphen = elemClass.indexOf('-');
                if (hyphen != -1)
                    toBeToggled = elemClass.substring(hyphen+1);
                    toBeToggled = toggleGroup;
                    hyphen = elemClass.length;
                var op = elemClass.substring(8, hyphen);
                togglers[togglerID].push(new Array(op, toBeToggled));
    // add javascript links to all toggler elements
    for (var i = 0; i < togglerElems.length; i++)
        createTogglerLink(togglerElems[i], i);
function owwsitesearch(f){

The codes must be placed in MediaWiki:Common.js.


{{Toggle|<default=>|<sost=>|<var=>}}. Or if given as free parameters: {{Toggle|<Valore di default>|<Valore da sostituire>|<Nome variabile>}}.
The switch element must have this class (you can use a tag like this): <span class="_toggler-toto">Change</span>.


1=/default= default text - optional.
2=/sost= alternative text - optional.
3=/var= element ID - avoid giving the same ID two different not-related switch elements.


Change a text with another through a link: {{Toggle|<default=Default>|<sost=Alternative>|<var=switch1>}} and

<span class="_toggler-switch1">Change!</span>


If the second parameter is null, then the text will be hidden:
{{Toggle|<>|<var=switch2>}} and

<span class="_toggler-switch2">Hide</span>

This text will be hidden

To change the contents with different links:

{{Toggle|<text 1 (as first parameter is the default text)>|<>|<var1>}}
{{Toggle|<>|<text 2 (as second parameter is hidden by default)>|<var2>}}

<span class="_toggler_hide-var2 _toggler_show-var1">link var1</span>
<span class="_toggler_hide-var1 _toggler_show-var2">link var2</span>

text 1

link var1 | link var2


The "toggling classes" used by this template are: - "_toggle NAMEVAR": element NAMEVAR, the ID.
- "_toggler_hide-NAMEVAR": clicking on this element, NAMEVAR will be hidden.
- "_toggler_show-NAMEVAR": clicking on this element, NAMEVAR will be shown.
An element can have multiple classes.

External links

- Source.

Visitez Modèle:Toggle/doc pour modifier ce texte ! (Comment ça fonctionne ?) (Actualiser ce texte - Pourquoi?)

* DIVULGATION : Certains des liens ci-dessus sont des liens d'affiliation, ce qui signifie que, sans frais supplémentaires pour vous, Fandom percevra une commission si vous cliquez et effectuez un achat.Sauf mention contraire, le contenu de la communauté est disponible sous licence CC-BY-SA.