J'ai besoin d'obtenir des éléments de Shadow DOM et de le changer. Comment je peux le faire?
<div>
<input type="range" min="100 $" max="3000 $">
</div>
Voici un exemple:
var container = document.querySelector('#example');
//Create shadow root !
var root = container.createShadowRoot();
root.innerHTML = '<div>Root<div class="test">Element in shadow</div></div>';
//Access the element inside the shadow !
//"container.shadowRoot" represents the youngest shadow root that is hosted on the element !
console.log(container.shadowRoot.querySelector(".test").innerHTML);
Démo:
var container = document.querySelector('#example');
//Create shadow root !
var root = container.createShadowRoot();
root.innerHTML = '<div>Root<div class="test">Element in shadow</div></div>';
//Access the element inside the shadow !
console.log(container.shadowRoot.querySelector(".test").innerHTML);
<div id="example">Element</div>
J'espère que cela t'aidera.
Vous ne pouvez pas accéder à un DOM fantôme créé par le navigateur pour afficher un contrôle, appelé #shadow-root (user-agent)
dans les outils de développement. <input>
en est un exemple.
Vous ne pouvez accéder qu'à ouvrir DOM Shadow personnalisé (ceux que vous créez vous-même), avec le { mode: 'open' }
option.
element.attachShadow( { mode: 'open' } )
Mise à jour
C'est vrai pour la plupart des éléments HTML standard UX: <input>
, <video>
, <textarea>
, <select>
, <audio>
, etc.