J'ai un bouton aller en haut qui apparaît lorsque l'utilisateur a fait défiler la page. Le bouton fonctionne comme prévu mais dans JLint, il donne un avertissement: Expected ':' and instead saw '='. Comment puis-je corriger le code:

var topBtn = document.createElement("button");
topBtn.innerHTML = "Top";

var topBtnWrapper = document.getElementById("topBtnWrap");
topBtnWrapper.appendChild(topBtn);

window.onscroll = function() {
  ((document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) ? topBtn.style.display = "block" : topBtn.style.display = "none");
};
0
JAT86 15 avril 2018 à 20:00

3 réponses

Meilleure réponse

Le problème réside ici:

((document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) ? topBtn.style.display = "block" : topBtn.style.display = "none");

Cela semble être un opérateur ternaire, mais ternaire comme moyen de décider quelle valeur utiliser au lieu de quelle instruction exécuter.

Cela pourrait être mieux représenté comme un bloc if-else:

if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
    topBtn.style.display = 'block';
} else {
    topBtn.style.display = 'none';
}

Si vous vouliez continuer à utiliser un opérateur ternaire, voici à quoi cela ressemblerait:

topBtn.style.display = document.body.scrollTop > 500 || document.documentElement.scrollTop > 500
    ? 'block'
    : 'none';
2
Chris Forrence 15 avril 2018 à 17:04

Je suppose que vous voulez dire ceci:

topBtn.style.display = document.body.scrollTop > 500 || document.documentElement.scrollTop > 500
    ? "block" 
    : "none";

L'opérateur ternaire n'est pas censé être une structure de contrôle de flux.

2
Álvaro González 15 avril 2018 à 17:03

Le format d'un opérateur ternaire est le suivant:

x = condition ? option1 : option2

Ne pas:

condition ? x = option1 : x = option2

Votre code devrait ressembler à:

topBtn.style.display = 
    (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) 
        ? "block" 
        : "none";
2
Quentin 15 avril 2018 à 17:06