升级javascript函数。没有经验
我正在用DreamWeaver创建一个网站,我使用了一个Spry小部件,它只是一个用于导航的侧栏,允许您通过单击来打开和关闭选项卡。你可以打开多个标签,这是我不喜欢的。我希望它在打开一个新选项卡时关闭打开的选项卡(这样您将始终只有一个打开的选项卡)。 我从来没有用javascript编程过,我看了一下js文件的代码,修改它看起来并不难。给你: 我看到打开选项卡时执行的函数是升级javascript函数。没有经验,javascript,web,Javascript,Web,我正在用DreamWeaver创建一个网站,我使用了一个Spry小部件,它只是一个用于导航的侧栏,允许您通过单击来打开和关闭选项卡。你可以打开多个标签,这是我不喜欢的。我希望它在打开一个新选项卡时关闭打开的选项卡(这样您将始终只有一个打开的选项卡)。 我从来没有用javascript编程过,我看了一下js文件的代码,修改它看起来并不难。给你: 我看到打开选项卡时执行的函数是 Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(
Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
{
if (this.isOpen())
this.close();
else
{
this.open();
}
this.focus();
return this.stopPropagation(e);
};
,所以我认为正确地修改这个,我可以使它关闭打开的那个。
此外,我意识到底部有一个功能,其目标是关闭所有选项卡(或面板)
但现在它甚至还没有打开一个标签。我不知道错误在哪里,因为我从未用Javascript编写过代码。您的问题是closeAllPanels()函数是CollapsablePanelGroup类的方法,而不是CollapsablePanel类的方法。当此为可折叠面板时,您试图调用此.closeAllPanels() 我不熟悉您正在使用的小部件,但我打赌您的面板将为您提供一些访问它所属组的方法。查找名为父属性或组或类似属性。然后您可以将其命名为.parent.closeAllPanels()
祝你好运 在关闭所有面板之前,尝试删除“this.” 我最近很少涉及JavaScript,但我相信与函数相关的关键字“this”是指触发事件的控件,也就是您单击的选项卡
此选项卡没有名为closeAllPanels()的函数,因为它属于该页。这将导致空引用错误,脚本的其余部分将无法运行。打开浏览器的“开发人员工具”,查看是否可以在控制台中看到错误。如果出现错误,请尝试修复,否则请在ONTAB上设置断点,然后单击以查看发生了什么。在Firefox中,你会想要Firebug,在chrome开发者工具(Ctrl+Shift+c)中,在IE中,我想他们称之为开发者工具,F12会从内存中调用它们。
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();
}
};
Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
{
if (this.isOpen())
this.close();
else
{
this.closeAllPanels();
this.open();
}
this.focus();
return this.stopPropagation(e);
};