Pourquoi l'événement onclick n'est-il pas déclenché à cet endroit ? Si vous pouvez obtenir l'objet DOM du li actuellement cliqué dans jquery, ne peut-il pas être utilisé dans JS comme celui-ci ?
$(document).ready(function(){
$("ul li").click(function(){
console.log($(this));//打印出当前被点击的li的jquery对象
console.log(this);//打印出当前被点击的li的dom对象
});
});
window.onload = function(){
var lis = document.getElementsByTagName("li");
lis.onclick = function(){
console.log("111");
console.log(this);
}
}
Modification :
window.onload = function(){
var lis = document.getElementsByTagName("li");
Array.from(lis).forEach(function(el) {
console.log("111");
console.log(this);
})
}
<p>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</p>
Merci à tous, j'ai déjà utilisé jquery, mais maintenant je regarde à nouveau js et j'ai trouvé de nombreux problèmes. Je ne ferai plus ce genre d’erreur stupide à l’avenir, je suis très impressionné ^_^.
Pouvez-vous cliquer pour déclencher cet événement ? Je peux utiliser segmentFault.
Mais il y a un léger problème avec votre code. getElementsByTagName renvoie un objet de type tableau
Vous devez le parcourir puis attribuer la valeur onclick à chaque élément
n'est pas la raison de
this
.onclick
是 DOM 的事件。但是此时的lis
Ce n'est pas du tout un dom, mais une collection de DOM.jQuery peut le gérer car
$("ul li")
renvoie un objet jQuery Lorsque la fonction click est appelée dessus, jQuery utilisera implicitement une boucle.Bien que la fonction
lis
很像数组,但是却不是数组。因此可以使用Array.from
le transforme en un véritable tableau.lis = document.getElementsByTagName("li") obtient un tableau.
Comment lier les événements ?
Essayez de ne pas utiliser .onclick() pour écrire l'événement click ; utilisez addEventListener('click', function(){console.log(this)}); ajoutez l'événement click et voyez s'il peut être déclenché. c'est parce que vous avez lis. Onclick est-il un tableau qui ne fonctionne pas pour cette raison ?
Le deuxième morceau de code est mal écrit. lis est un tableau, pas un objet dom, donc définir onclick est inutile
Changez-le par ceci
Utilisez
getElementsByClassName
这个方法吧,把getElementsByTagName
pour l'encapsuler directement et il peut être utilisé comme opération dom
.Comme le montre l'image ci-dessus, votre lis est imprimé sous la forme d'un tableau d'objets. Selon votre idée, vous devez parcourir lis pour vous lier en un clic à chaque objet li