J'essaie de définir une classe en fonction de l'URL. J'essaie d'utiliser le code ci-dessous, mais dans tous les cas, il active la classe active pour le deuxième onglet.
var pathname = window.location.pathname; if(pathname = '/learn/subsection2') { $("ul.tabs li:eq(1)").addClass("active").show(); //Activate second tab $(".tab_content:eq(1)").show(); //Show second tab content } else { $("ul.tabs li:first").addClass("active").show(); //Activate first tab $(".tab_content:first").show(); //Show first tab content }
Vous assignez plutôt que de vérifier l'égalité dans votre déclaration if.
if(pathname == '/learn/subsection2') { ...
if(pathname = '/learn/subsection2') { // assignment if(pathname == '/learn/subsection2') { // test for equality if(pathname === '/learn/subsection2') { // test for equality without type coercion
Vous utilisez =
au lieu de ==
, une erreur de programmation commune. =
Est une affectation, ==
est une comparaison.
if (pathname == '/lean/subsection2') { // ...
Lors de l'utilisation de =
, il attribue la chaîne /lean/subsection2
à la variable pathname
et l' évalue comme une valeur booléenne, ce qui est toujours vrai (il doit être faux ou indéfini), donc il faut toujours le bloc de condition positive.
Utilisez ==
au lieu de =
dans l'instruction if
.
Vous avez utilisé a =
au lieu d'un ==
ou ===
dans votre comparaison. C'est pourquoi de nombreux programmeurs décalent la déclaration, donc il lance une erreur par rapport à l'exécution du code involontairement … C'est une erreur très commune!
Voici un exemple de même if
instruction g a changé. Si vous avez utilisé ce format, mais avez commis la même erreur, cela aurait provoqué une erreur qui vous aurait aidé à le localiser plus rapidement:
if('/learn/subsection2' == pathname){ ... }