Javascript – si la déclaration ne fonctionne pas?

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){ ... }