我有这段代码,它获取单击的超链接的类并切换该超链接中特定 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");
}
}
}
问题是当我点击超链接时,这个函数被调用,第四行初始化pauseIconStatus
为null
everytime,而不是在后续调用中保留可能的值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] 删除。
我来说两句