【问题标题】:Variable redefined by fast clicking?通过快速点击重新定义变量?
【发布时间】:2015-11-13 10:45:18
【问题描述】:

我的代码遇到了问题。如果用户点击非常快,则可以重新定义 originalHeight 值,我正在努力解决这个问题。有人可以指出我正确的方向,以便我能理解为什么这是可能的吗?

HTML:

onclick="releaseElement()"

JS:

function releaseElement() {
  if (typeof originalHeight === 'undefined' || flag !== "open") {
      originalHeight = $('#element').height();
      flag = "closed";
  }
  if (flag === "closed") {
      flag = "open";
      var height = ($(window).height() - 60);
      $('#element').stop().animate({height: height});
      $('#anotherelement').stop().animate({marginTop: "-205px"});
      return;
  }
  if (flag === "open") {
      $('#element').stop().animate({height: originalHeight});
      $('#anotherelement').stop().animate({marginTop: "-105px"});
      flag = "closed";
      return;
  }
}

【问题讨论】:

  • 是否存在 Click 事件?
  • 请创建一个重现特定问题的代码 sn-p。
  • 我的问题是,如果用户在定义 if 语句完成之前快速单击元素,则可以重新定义 originalHeight。

标签: javascript jquery html javascript-events


【解决方案1】:

我不太确定,但请按以下方式检查您的代码是否需要“else”...

if (flag === "closed") {
      flag = "open";
      var height = ($(window).height() - 60);
      $('#element').stop().animate({height: height});
      $('#anotherelement').stop().animate({marginTop: "-205px"});
      return;
  }
else
  if (flag === "open") {
      $('#element').stop().animate({height: originalHeight});
      $('#anotherelement').stop().animate({marginTop: "-105px"});
      flag = "closed";
      return;
  }

因为如果您的标志最初是关闭的,则多次单击它会一直调用 if(flag==="close") 和 if(flag==="open")。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2019-04-07
    • 2019-05-27
    相关资源
    最近更新 更多