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");
};
3 réponses
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';
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.
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";
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.