Maison > Questions et réponses > le corps du texte
P粉0463871332023-09-06 00:19:35
UL LI n'est pas un élément enfant valide de select.
Cependant, j'ai simplifié votre code pour plus d'efficacité.
J'ai ajouté un attribut de données à chaque div de langue. Cette propriété contient la valeur de langue représentant le contenu. J'ai également créé une classe CSS appelée "active" qui affichera le div de langue approprié et masquera le div de langue par défaut.
Ensuite, j'ai utilisé le gestionnaire d'événements au lieu de l'événement en ligne (onchange), ce qui est un meilleur moyen et vous aidera également à en faire plus à l'avenir.
Dans mon auditeur d'événement, je reçois simplement la valeur sélectionnée. Je vois ensuite s'il existe des divs de langue avec une classe active, et si c'est le cas, je les supprime. Je trouve et ajoute ensuite la classe active au div de langue approprié.
Ce processus vous aidera à étendre votre code car vous n'avez pas besoin de vous soucier des instructions if.
let langSelect = document.querySelector("#language_select"); langSelect.addEventListener("change",(e) => { let shown = document.querySelector(".active[data-lang]"); if(shown)shown.classList.remove("active"); document.querySelector(`[data-lang='${langSelect.value}']`).classList.add("active") });
[data-lang]{visibility:hidden} .active[data-lang]{visibility:visible;}
<select class="nav-item has-sub-menu language-selector" id="language_select"> <option disabled selected value="">Language</option> <option value="id">Indonesia</option> <option value="en">English</option> </select> <div class="col-9 col-md-10 col-lg-8 mx-auto active" data-lang="id" id="slider-id1"> <p class="slide-subtitle narrow-centerd-text"> indonesia indonesia indonesia </p> </div> <div class="col-9 col-md-10 col-lg-8 mx-auto" data-lang="en" id="slider-en1"> <p class="slide-subtitle narrow-centerd-text"> en en en </p> </div>