如何根据屏幕的像素宽度设置JavaScript函数“禁止使用”?

如何根据屏幕的像素宽度设置JavaScript函数“禁止使用”?,javascript,css,dom,Javascript,Css,Dom,我看过很多关于如何在屏幕宽度超过定义的最大值或最小值时触发函数的内容,但出于我的目的,我不希望函数立即发生。下面是一个来自W3学校的JS函数片段作为示例 function myFunction() { var x = document.getElementById("myLinks"); if (x.style.display === "block") { x.style.display = "none"; } else { x.style.display = "bl

我看过很多关于如何在屏幕宽度超过定义的最大值或最小值时触发函数的内容,但出于我的目的,我不希望函数立即发生。下面是一个来自W3学校的JS函数片段作为示例

function myFunction() {
  var x = document.getElementById("myLinks");
  if (x.style.display === "block") {
    x.style.display = "none";
  } else {
    x.style.display = "block";
  }
}

假设我只想在屏幕宽度小于等于500的情况下访问此功能,如果屏幕宽度大于等于501,则不使用此功能。在我的情况下,没有其他函数,因为当它超过指定的宽度时,默认情况下它将执行其他操作。我需要执行的JavaScript函数将是一个onClick事件,只有当屏幕低于指定的宽度时才能执行该事件。

您可以简单地将函数的内容包装在一个if中,如果该函数根据您想要的值(例如,500)检查页面视口的宽度,或者立即返回函数,这样就省去了几个花括号

function myFunction() {
  if (window.innerWidth > 500) return;
  var x = document.getElementById("myLinks");
  if (x.style.display === "block") {
    x.style.display = "none";
  } else {
    x.style.display = "block";
  }
}
如果您试图确保该函数没有被其他开发人员错误地使用,您可以抛出一个错误,例如

if (window.innerWidth > 500) throw new Error("This function should not be called on viewports smaller than 500px width!");

您可以简单地将函数的内容包装在if中,该if检查页面视口的宽度是否符合您想要的值,例如500,或者立即返回函数,这样可以节省几个大括号

function myFunction() {
  if (window.innerWidth > 500) return;
  var x = document.getElementById("myLinks");
  if (x.style.display === "block") {
    x.style.display = "none";
  } else {
    x.style.display = "block";
  }
}
如果您试图确保该函数没有被其他开发人员错误地使用,您可以抛出一个错误,例如

if (window.innerWidth > 500) throw new Error("This function should not be called on viewports smaller than 500px width!");
我在这里坚持@media规则,不直接设置style.display,而是添加/删除一个类

JS:

CSS:

这样做的另一个好处是,如果元素具有类,调整窗口大小将自动隐藏该元素。

我在这里坚持@media规则,而不是直接设置style.display,而是添加/删除一个类

JS:

CSS:


这样做的另一个好处是,如果窗口具有类,则调整窗口大小将自动隐藏元素。

仅检查此函数内部的宽度是不行的?还应注意,正如那段代码很好地显示的那样。只有当所讨论的元素具有包含display:block的内联样式属性时,它才会按预期工作,否则函数在第一次调用时将无法正常工作。我使用的元素在默认情况下将具有display:block,因此我认为这不应该是一个问题。仅检查此函数内部的宽度是不行的?还应该注意,正如那段代码很好地显示的那样。只有当所讨论的元素具有包含display:block的内联样式属性时,它才会按预期工作,否则函数在第一次调用时将无法正常工作。我使用的元素默认具有display:block,因此我认为这不应该是一个问题。