繁体   English   中英

升级javascript功能。 没有经验

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM