JSLint警告:“预期':'而是看到' ='

时间:2018-04-15 17:00:36

标签: javascript jslint

当用户在页面上向下滚动时,我会看到一个转到顶部的按钮。该按钮按预期工作,但在JLint中,它会发出警告:Expected ':' and instead saw '='.如何更正代码:

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 个答案:

答案 0 :(得分:2)

我猜你的意思是:

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

三元运算符并不是一个流量控制结构。

答案 1 :(得分:2)

问题在于:

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

这似乎是一个三元运算符,但是三元作为决定使用哪个值而不是运行哪个语句的方法。

这可以更好地表示为if-else块:

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

如果您想继续使用三元运算符,它的外观如下:

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

答案 2 :(得分:2)

三元运算符的格式为:

x = condition ? option1 : option2

condition ? x = option1 : x = option2

您的代码应如下所示:

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