在使用JS标准(没有分号)时,我遇到了一个有点令人困惑的问题,我认为我在使用以下代码时出错:
window.onload = function () {
var menu = document.getElementById('menu')
(window.pageYOffset > 10)
? menu.classList.add('scrolled')
: menu.classList.remove('scrolled')
}
这会在控制台中产生document.getElementById is not a function
错误,并在var声明的末尾添加一个分号来修复它。我想知道的是,如果使用JS编码标准,上面的代码在某些方面不是一个好的模式或错误。
更新:好吧,所以我认为正确的方法,标准的,做上述事情的方法是:
var menu = document.getElementById('menu')
;(window.pageYOffset > 10)
? menu.classList.add('scrolled')
: menu.classList.remove('scrolled')
答案 0 :(得分:2)
问题在于JS如何在没有分号的情况下解释代码:
document.getElementById('menu')
删除空格后,您可以像这样重新组织:
if
所以现在JS会尝试将 not-a-function program test
implicit none
character(len=100) :: s
read(*, '(a)') s
write(*, '(i0)') len_trim(s)
end program test
作为一个函数来调用它是否返回一个值,然后评估你的Hello World!
,并且这一点你的错误会弹出。
答案 1 :(得分:0)
另一个想法是使您的三元数更特定于您实际要切换的内容,并使用返回值选择方法:
var menu = document.getElementById('menu')
menu.classList[window.pageYOffset > 10 ? 'add' : 'remove']('scrolled')
这样一来,您不必重复自己,您就可以完全避免此问题。