Maison > Questions et réponses > le corps du texte
function tableColor() {
alert(0) //这里执行
$(".table tr:odd").css("background", "#f8f8f8");
}
第一种写法:
tableColor();//执行alert(0),弹出“0”,表格颜色**没有变化**。
第二种写法:
$(function() {
tableColor();请输入代码
})
//弹出“0”,表格颜色变化了。
Pourquoi différentes méthodes d'écriture produisent-elles des résultats différents ? Logiquement, la même fonction n'en exécutera pas seulement la moitié.
phpcn_u15822017-06-26 10:55:33
$(function(){
//C'est le code qui est exécuté après le chargement de la page
})
Votre première façon d'écrire est qu'il est exécuté avant le chargement de la page, donc le DOM ne changera pas s'il n'est pas détecté. Coloré
黄舟2017-06-26 10:55:33
Le deuxième est l'abréviation de .ready()
. Veuillez consulter la documentation pour plus de détails.
漂亮男人2017-06-26 10:55:33
Généralement, les références js sont placées dans le <head></head>
里面,
第一种写法执行的时候,页面还没加载完,所以找不到$(".table tr:odd")
sélecteur ;
Le deuxième type est exécuté après le chargement de la page, la couleur du sélecteur peut donc être modifiée.
Soit utilisez la deuxième méthode, soit ajoutez la référence js à la fin de la page.
三叔2017-06-26 10:55:33
Dans la première façon d'écrire, lorsque votre code est exécuté, l'élément table peut ne pas être chargé sur la page, donc l'élément peut ne pas être trouvé, donc il n'y aura pas de changement de couleur.
La deuxième façon d'écrire est d'attendre que les éléments de la page soient chargés avant d'exécuter votre code. Cela garantit que tous les éléments de la page ont été chargés et que le code peut trouver les éléments requis, donc les modifications correspondantes seront apportées
漂亮男人2017-06-26 10:55:33
$(function() {
// DOM加载完毕
});
La différence entre vos deux appels est que la première fois que vous avez appelé $(".table tr:odd")
alors que le DOM n'était pas chargé, vous n'avez peut-être pas obtenu l'élément correspondant. Vous pouvez l'imprimer pour voir, mais la deuxième fois, vous l'avez définitivement obtenu.
Il est recommandé de mettre JS
代码或引入的 JS
文件放在页面底部,<BODY>
devant.
phpcn_u15822017-06-26 10:55:33
Semblable à la réponse au premier étage, la première façon d'écrire, si elle est placée avant la balise .table et exécutée avant le chargement du dom, le sélecteur $ risque de ne pas pouvoir trouver le dom et la couleur ne peut pas être modifié.
Quant au second, il est recommandé de vérifier la description du document jquery. Je ne peux pas ouvrir le site officiel de jquery ici, je peux donc le lire depuis un autre endroit
http://www.css88.com/jqapi-1. ....
代言2017-06-26 10:55:33
1. Votre première méthode d'écriture consiste à l'exécuter lorsque la balise du document n'a pas été chargée. En d'autres termes, si votre code HTML n'a pas été chargé, vous ajoutez un style à .table tr:odd. Le script js ne saura pas de quel objet il s'agit, il ne sera donc pas défini. L'élément n'a pas fini de se charger. Cependant, il n'y a pas d'erreur de syntaxe dans la fonction, donc l'alerte 0
2.$(function(){}) sera toujours exécutée, c'est-à-dire qu'elle attendra que le code HTML soit chargé avant d'exécuter la méthode à l'intérieur. le temps, le code HTML a été chargé et le js sera capturé. Quel élément est cet objet afin qu'il puisse être stylisé.
Référence spécifique : http://www.w3school.com.cn/h.asp
迷茫2017-06-26 10:55:33
La première façon d'écrire :
tableColor();//Execute alert(0), "0" apparaît, mais le dom n'est pas sélectionné et le code est exécuté ligne par ligne
La deuxième façon d'écrire : exécuter après le chargement du document
$(function() {
tableColor();
})
Conclusion, l'introduction de js est placée en bas du document. En plus des fonctions personnalisées, les js internes en html sont écrits en $(function() {}) pour garantir que le code js est exécuté une fois le document terminé. exécuté