开关语句滚动值(Javascript)

开关语句滚动值(Javascript),javascript,switch-statement,Javascript,Switch Statement,我正在尝试创建一个网站,根据用户滚动页面的深度触发不同的事件 到目前为止,我使用的逻辑是通过一系列if语句来检查用户在页面下方的距离: window.onscroll = function(ev) { if(window.innerHeight + window.scrollY >= <insert value or reference here>) { <enter code here> } ... window.onscroll=函数(ev){

我正在尝试创建一个网站,根据用户滚动页面的深度触发不同的事件

到目前为止,我使用的逻辑是通过一系列if语句来检查用户在页面下方的距离:

window.onscroll = function(ev) {

if(window.innerHeight + window.scrollY >= <insert value or reference here>) 
{
     <enter code here>
}
...
window.onscroll=函数(ev){
如果(window.innerHeight+window.scrollY>=)
{
}
...
我想把它写成switch语句会更方便:

switch(window.innerHeight + window.scrollY)
{
    case (<insert value or reference here>):
        <enter code here>
        break;
        ...
}
开关(window.innerHeight+window.scrollY)
{
案例():
打破
...
}
但出于某种原因,它是作为if语句触发的,而不是作为switch语句触发的。有人能帮我理解为什么吗?我也想知道是否有更有效的方法来实现这一点,或者是否也欢迎任何建议

谢谢!

$(“#块1”)。悬停(
函数(){
$(“#loc”).text(“鼠标滚动到块1”);
},函数(){
$(“#loc”)。文本(“”);
}
);
$(“#块2”)。悬停(
函数(){
$(“#loc”).text(“鼠标滚动到块2”);
},函数(){
$(“#loc”)。文本(“”);
}
);

xxx
这是一个很长的内容。需要滚动才能看到所有内容
这是一个注释块。您通过输入该块来获得此注释

这是一个注释块。您通过输入block
获得此注释块,因为您在
if
语句中比较
=
,而
switch
=
。如果您想要switch语句,它应该如下所示:

switch(true){
  case (window.innerHeight + window.scrollY >= <insert value or reference here>) :
      ....
      break;
}
开关(真){
大小写(window.innerHeight+window.scrollY>=):
....
打破
}

表达式的计算结果应始终为true或false。

如果您愿意使用jquery插件,这可能是一个选项。这是一个很棒的工具,我不太明白您所说的“它作为if语句触发,而不是作为switch语句触发”是什么意思。你认为switch语句是如何工作的?switch语句不会比if语句提供更多的便利。我个人从不使用switch。如果我必须做更多的检查,我会找到一种方法让循环为我完成工作。谢谢你们的回复,伙计们,我显然对这一点很陌生,并试图对所有事情了如指掌-很抱歉,如果我没有很好地解释这一点,或者我错过了一些明显的东西。我的意思是,当我在章节中使用警报进行调试时,当我使用if语句而不是开关时,我会得到一个结果。这非常有用,Kieran谢谢-我会研究它。让我们不要将库引入到尚未使用它且未标记为这样的代码中。另外,不要发布不完整的答案。不管你是否进行了编辑,有些人会投反对票并继续前进。感谢你的回复,只是为了澄清它必须基于页面的位置(用户滚动了多远)而且不管他们的鼠标是否靠近内容,甚至是靠近浏览器窗口。谢谢!这样我就不会有--case(>=)的情况了:有没有一种更有效的方法来实现这一点,因为如果我要写出整件事,我最好只使用if语句?您可以将
window.innerHeight+window.scrollY
放在变量中,并在您的switch语句中引用它,例如
var getscroll=window.innerHeight+window.scrollY;switch(true){case>(getscroll>=value):…}
。如果只需要比较和分叉结果,那么
if
switch
之间没有任何区别。如果有很多场景,那么switch将更有效。