J'essaie de basculer la visibilité de certains éléments DIV sur un site Web en fonction de la classe de chaque DIV. J'utilise un extrait de code JavaScript de base pour les activer. Le problème est que le script utilise uniquement getElementById
, car il getElementByClass
n'est pas pris en charge dans JavaScript. Et malheureusement, je dois utiliser class et non id pour nommer les DIV car les noms DIV sont générés dynamiquement par ma feuille de style XSLT en utilisant certains noms de catégories.
Je sais que certains navigateurs prennent désormais en charge getElementByClass
, mais depuis Internet Explorer, je ne veux pas emprunter cette voie.
J'ai trouvé des scripts utilisant des fonctions pour obtenir des éléments par classe (comme le # 8 sur cette page: http://www.dustindiaz.com/top-ten-javascript/ ), mais je n'arrive pas à comprendre comment les intégrer avec avec mon script à bascule.
Voici le code HTML. Les DIV eux-mêmes sont manquants car ils sont générés au chargement de la page avec XML / XSLT.
Question principale: Comment obtenir le script Toggle ci-dessous pour obtenir élément par classe au lieu d'obtenir élément par ID?
<html>
<head>
<!--This is the TOGGLE script-->
<script type="text/javascript">
<!--
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
//-->
</script>
</head>
<!--the XML/XSLT page contents will be loaded here, with DIVs named by Class separating dozens of li's-->
<a href="#" onclick="toggle_visibility('class1');">Click here to toggle visibility of class 1 objects</a>
<a href="#" onclick="toggle_visibility('class2');">Click here to toggle visibility of class 2 objects</a>
</body>
</html>
Réponses:
Les navigateurs modernes prennent en charge
document.getElementsByClassName
. Vous pouvez voir la répartition complète des fournisseurs qui fournissent cette fonctionnalité sur caniuse . Si vous cherchez à étendre la prise en charge dans les navigateurs plus anciens, vous pouvez envisager un moteur de sélection comme celui trouvé dans jQuery ou un polyfill.Réponse plus ancienne
Vous voudrez vous enregistrer dans jQuery , ce qui permettra ce qui suit:
Google propose un fichier source jQuery hébergé, vous pouvez donc le référencer et être opérationnel en quelques instants. Incluez les éléments suivants dans votre page:
la source
<script>
balises. JQuery hébergé par Google est conçu spécifiquement pour les sites Web de production (en tant que CDN). Si votre site est https, assurez-vous simplement d'utiliser la version https pour éviter l'avertissement de contenu mixte.<script>
l'injection de balises est à la base des requêtes JSONP intersites.La
getElementsByClassName
méthode est désormais supportée nativement par les versions les plus récentes de Firefox, Safari, Chrome, IE et Opera, vous pouvez créer une fonction pour vérifier si une implémentation native est disponible, sinon utilisez la méthode Dustin Diaz:Usage:
la source
Acyuellement en utilisant getElementsByClassName, il renvoie un tableau de plusieurs classes. Parce que le même nom de classe peut être utilisé dans plus d'une instance à l'intérieur de la même page HTML. Nous utilisons l'identifiant d'élément de tableau pour cibler la classe dont nous avons besoin, dans mon cas, c'est la première instance du nom de classe donné. J'ai donc utilisé [0]
la source
Utilisez-le pour accéder à la classe en Javascript.
la source
En ajoutant à la réponse de CMS , c'est une approche plus générique que
toggle_visibility
je viens d'utiliser moi-même:la source
Ma solution:
Créez d'abord des balises "<style>" avec un identifiant.
Ensuite, je crée une fonction en JavaScript comme ceci:
A fonctionné à merveille pour moi.
la source
<br>
) sont inutiles / invalides dans une balise de styleAjouter des ID à la déclaration de classe
la source