[英]Upgrading javascript function. No experience
我正在使用DreamWeaver创建一个网站,并且使用了Spry小部件,它只是用于导航的侧栏,并且允许您通过单击它们来打开和关闭选项卡。 您可以打开多个选项卡,这是我不太喜欢的选项。 我希望它在打开新标签页时关闭打开的标签页(因此,您始终只会有一个打开的标签页)。 我从来没有用JavaScript编程过,我看了一下js文件的代码,对其进行修改似乎并不难。 在这里,您可以找到它: http : //pastebin.com/eZAYE0kZ
我看到打开选项卡时执行的功能是
Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
{
if (this.isOpen())
this.close();
else
{
this.open();
}
this.focus();
return this.stopPropagation(e);
};
,所以我认为正确修改此代码可以将其关闭。 另外,我意识到在底部有一个功能,其目的是关闭所有选项卡(或面板),
Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels = function()
{
var cpanels = this.getPanels();
var numCPanels = cpanels.length;
for (var i = 0; i < numCPanels; i++)
{
var w = this.getElementWidget(cpanels[i]);
if (w && w.isOpen())
w.close();
}
};
因此,我认为可以通过从上一个函数调用此函数(假设我没有millons选项卡,这样就不会产生麻烦),我可以找到已打开的选项卡并关闭它。 所以我修改了第一个,
Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
{
if (this.isOpen())
this.close();
else
{
this.closeAllPanels();
this.open();
}
this.focus();
return this.stopPropagation(e);
};
但这甚至还没有打开标签。 我不知道错误在哪里,因为我从未用Javascript编写过代码。
您的问题是closeAllPanels()函数是CollapsiblePanelGroup类的方法,而不是CollapsiblePanel的方法。 当这是一个CollapsiblePanel时,您正在尝试调用this.closeAllPanels()。
我不熟悉您正在使用的小部件,但是我敢打赌您的面板会为您提供一些访问它所属组的方法。 查找称为父级或组或类似属性。 然后可以调用this.parent.closeAllPanels()
祝好运!
尝试删除“此”。 从closeAllPanels()之前开始;
我最近没有涉及JavaScript,但是我认为与您的函数相关的关键字“ this”是指触发事件的控件,也就是您单击的选项卡。
该选项卡没有属于该页面的名为closeAllPanels()的函数。 这将导致Null引用错误,并且脚本的其余部分将无法运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.