D'accord, j'ai déjà essayé JavaScript, mais la chose la plus utile que j'ai écrite est un sélecteur de style CSS. Je suis donc un peu nouveau dans ce domaine. Disons que j'ai un code HTML comme celui-ci:
<div id="foo">
<div class="bar">
Hello world!
</div>
</div>
Comment changerais-je "Hello world!" à "Au revoir monde!" ? Je sais comment document.getElementByClass et document.getElementById fonctionnent, mais j'aimerais être plus précis. Désolé si cela a été demandé avant.
la source
document.getElementsByClassName
fonctionnerait très bien..innerHtml
à.textContent
la prestation de sécurité de copier / coller les codeurs.Vous pouvez le faire comme ceci:
ou, si vous voulez le faire avec moins de vérification des erreurs et plus de brièveté, cela peut être fait en une seule ligne comme ceci:
En explication:
id="foo"
.class="bar"
.innerHTML
de cet élément pour modifier son contenu.Avertissements: certains navigateurs plus anciens ne prennent pas en charge
getElementsByClassName
(par exemple, les anciennes versions d'IE). Cette fonction peut être mise en place en cas d'absence.C'est là que je recommande d'utiliser une bibliothèque qui prend en charge le sélecteur CSS3 intégré plutôt que de vous soucier de la compatibilité du navigateur vous-même (laissez quelqu'un d'autre faire tout le travail). Si vous voulez juste une bibliothèque pour le faire, alors Sizzle fonctionnera très bien. Dans Sizzle, cela se ferait comme ceci:
jQuery a la bibliothèque Sizzle intégrée et dans jQuery, ce serait:
la source
Si cela doit fonctionner dans IE 7 ou une version antérieure, vous devez vous rappeler que getElementsByClassName n'existe pas dans tous les navigateurs. Pour cette raison, vous pouvez créer votre propre getElementsByClassName ou vous pouvez essayer ceci.
la source
getElementsByClassName
ne fonctionne pas non plus dans IE8, mais vous pouvez l'utiliserquerySelectorAll
à sa place (à peu près de toute façon).qSA
dans un shim afin que vous puissiez toujours utiliser du code natif dans IE8. Bien que vous examiniez de plus près votre solution, vous avez quelques éléments à corriger.var i = 0, var child = fooDiv.childNodes[i]
est invalide.i <= fooDiv.childNodes
n'a pas vraiment de sens.childNode.className.test("bar")
Il n'y a pas dechildNode
variable et une chaîne n'a pas detest()
méthode.Fonction récursive:
la source
La façon la plus simple de le faire est:
ou mieux lisible:
la source
Vous ne devez pas utiliser document.getElementByID car il fonctionne uniquement pour les contrôles côté client dont les identifiants sont corrigés. Vous devriez utiliser jquery à la place comme dans l'exemple ci-dessous.
utilisez ceci :
si vous voulez une opération de suppression de modification, ajoutez simplement "." derrière et faire les opérations
la source