191 votes

Obtenir un élément dans un autre élément par classe et ID - JavaScript

D'accord, j'ai déjà tâté de JavaScript, mais la chose la plus utile que j'ai écrite est un commutateur 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! a Goodbye world! ?

Je sais comment document.getElementsByClassName y document.getElementById travail, mais je voudrais être plus précis. Désolé si cette question a déjà été posée.

3voto

Fonction récursive :

function getElementInsideElement(baseElement, wantedElementID) {
    var elementToReturn;
    for (var i = 0; i < baseElement.childNodes.length; i++) {
        elementToReturn = baseElement.childNodes[i];
        if (elementToReturn.id == wantedElementID) {
            return elementToReturn;
        } else {
            return getElementInsideElement(elementToReturn, wantedElementID);
        }
    }
}

0 votes

Il y a un bug mineur dans l'échantillon ci-dessus. Au lieu de retourner instantanément dans le chemin else, vous devez d'abord vérifier si quelque chose a été trouvé. Sinon, les autres noeuds enfants ne seront pas parcourus en boucle. Quelque chose comme ceci : if(elementToReturn) { return elementToReturn ; }

1voto

Jhonny SAN Points 11

Vous pouvez utiliser getElementById o getElementsByClassName sur les éléments du DOM également. et pas seulement sur les document

var targetDiv = document.getElementById("foo").getElementsByClassName("bar")[0];
targetDiv.textContent = "Goodbye world!";

<div id="foo">
    <div class="bar">
        Hello world!
    </div>
</div>

-7voto

hardik akbari Points 5

Vous ne devez pas utiliser document.getElementByID parce que cela ne fonctionne que pour les contrôles côté client dont les identifiants sont fixes. Vous devriez utiliser jquery à la place comme dans l'exemple ci-dessous.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>                                                                                                             
<div id="foo">
   <div class="bar"> 
          Hello world!
     </div>
</div>

utiliser ce :

$("[id^='foo']").find("[class^='bar']")

// do not forget to add script tags as above

si vous voulez supprimer ou modifier une opération, ajoutez simplement "." derrière et effectuez les opérations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X