在后续函数中保留变量的值

瑞约娜

我有这段代码,它获取单击的超链接的类并切换该超链接中特定 div播放暂停图标我的 Javascript 逻辑有问题:

var mediaClicked_class = "";
var previousMediaClicked_class = "";
var pauseIconStatus = null;

// Get class of clicked hyperlink
function mediaClick_class(clicked_class) {
  alert(pauseIconStatus + " : Initial pause Icon status");
  mediaClicked_class = clicked_class; // when i click map hyperlink, pass respective class into variable

  preEmptivePlay(mediaClicked_class, pauseIconStatus);
}

function preEmptivePlay(mediaClicked_class, pauseIconStatus) {
  if (pauseIconStatus == null) { //global var. init.
    //toggle class of currently clicked div.icon
    $("div.icon_" + mediaClicked_class).toggleClass("playicon pauseicon");

    var pauseIconAvailability = $("div.icon_" + mediaClicked_class).hasClass("pauseicon");

    if (pauseIconAvailability) { //true - playing
      pauseIconStatus = 1;; //pause icon is active i.e. song is playing
      previousMediaClicked_class = mediaClicked_class; //store current class to be called later
      alert(pauseIconStatus + " : Current icon status");
    } else { //false - not playing
      pauseIconStatus = 0;; //pause icon is inactive i.e. song is not playing
      previousMediaClicked_class = mediaClicked_class;
      alert(pauseIconStatus + " : Current icon status");

    }
  }
}

问题是当我点击超链接时,这个函数被调用,第四行初始化pauseIconStatusnulleverytime,而不是在后续调用中保留可能的值0。

我在哪里可以声明这个变量初始化为空,然后在后续调用中取消重新初始化?

这里的问题是您pauseIconStatus作为参数传递给函数preEmptivePlay,这意味着您所做的更改在该函数之外看不到。

您可以通过添加以下行来明确地看到这种情况:

alert(pauseIconStatus + " : After preEmptivePlay pause Icon status");

mediaClick_class在您调用之后立即进入preEmptivePlay,您将看到 for 的值如何pauseIconStatus再次为空,因为您在内部所做的更改preEmptivePlay永远不会离开该函数。

如果你改变mediaClick_class它有这个:

pauseIconStatus = preEmptivePlay(mediaClicked_class, pauseIconStatus);

并且还进行更改,preEmptivePlay以便最后一行(添加)是:

return pauseIconStatus;

您应该会看到,在第一个点击之后pauseIconStatus将停止null点击。

也可能是,根据mediaClick_class调用方式,您还需要添加return false;到点击处理程序的末尾,否则点击超链接将导致页面重新加载,例如,如果您的页面被称为 default.html链接看起来像这样:

<a href="default.html" id="myLink"><div id="icon_thing">Text</div></a>

您对click事件的安排需要如下所示:

$("#myLink").on('click', function ()
{
    mediaClick_class('thing');

    return false;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

局部变量在函数中保留值

在匿名内部类中保留变量的值

在递归函数C ++中保留原始值

在Python Django中的后续请求之间保留变量的值

替换变量中的值,并在BASH中保留新行

如何在jersey Web服务中保留类变量的值

如何在bash中保留变量的先前值

JavaScript 变量不会在 mouseDown() 事件中保留值

在TypeScript函数返回值中保留类型信息

在Prolog中保留值

在DisableDelayedExpansion ENDLOCAL中保留变量

是否可以在构建步骤中设置VSTS Build变量,以便该值可以在后续的构建步骤中使用?

将函数参数分配给C中的局部静态变量,并在递归中保留第一个值

如何在函数组件中保存变量的值

如何在Matlab函数中保存变量的先前值

在组件中保留 HttpRequest 值

Bamboo:在后续的Maven任务中访问脚本变量

PHP变量在后续的AJAX调用中返回“默认”

For循环在后续迭代中跳过变量声明

在后续 bash 命令中使用 bash 变量

在后续通话中获得相同的时间戳记值

Android-在应用程序的生命周期中保留变量的值

如何将系数设置为特定值,并在模型摘要中保留预测变量?

变量可以在python的while循环中保留先前的值吗?

如何在Shell脚本中的for循环中保留变量的值

查找列表中插入的匹配项并在后续列表中保持顺序

内部重复函数中的变量保留了旧值

我可以在 switchMap 转换函数中保留 LiveData 的原始值吗?

通过by函数保留'by'变量