【问题标题】:Tweak code to expand web parts in Sharepoint调整代码以在 Sharepoint 中扩展 Web 部件
【发布时间】:2018-06-22 08:32:24
【问题描述】:

我正在尝试调整我在网上找到的一些代码,以便在 Sharepoint 站点中的 Web 部件旁边创建一个展开按钮。此代码的问题是默认情况下所有 Web 部件都已展开,您必须单击才能折叠它。我只想让我的常见问题解答 (WebPartWPQ7) Web 部件已经折叠,用户可以通过单击展开它。其他 Web 部件不需要展开/折叠按钮。

<script type="text/javascript">
//
// Expand/Collapse Buttons
//

function WPToggle(thisId, ImageId) {
    if (document.getElementById(thisId).style.display == "none") {
        document.getElementById(thisId).style.display = "";
        document.getElementById(ImageId).src = "/_layouts/images/minus.gif";
    } else {
        document.getElementById(thisId).style.display = "none";
        document.getElementById(ImageId).src = "/_layouts/images/plus.gif";
    }
}

function ExpandCollapseBody() {
    var i = 1;
    var WPid = "WebPartWPQ1";
    var WPtitleid = "WebPartTitleWPQ1";
    var Toggleid = "ToggleImage1";
    do {
        try {
            document.getElementById(WPtitleid).innerHTML = '<IMG id="' + Toggleid + '" onClick="WPToggle(\'' + WPid + '\',\'' + Toggleid + '\')" alt="Expand/Collapse" style="margin:6px 5px 0px 2px; float:left; cursor:pointer;" src="/_layouts/images/minus.gif" />' + document.getElementById(WPtitleid).innerHTML;
            if (document.getElementById(WPid).style.display == "none") {
                document.getElementById(Toggleid).src = "/_layouts/images/plus.gif";
            }
        } catch (err) {}
        i = i + 1;
        WPid = "WebPartWPQ" + i;
        WPtitleid = "WebPartTitleWPQ" + i;
        Toggleid = "ToggleImage" + i;
    } while (document.getElementById(WPid))
}

_spBodyOnLoadFunctionNames.push("ExpandCollapseBody()");
</script>

【问题讨论】:

  • 使用id="WebPartWPQ1"向您的HTML元素添加style="display: none;"属性

标签: javascript jquery html css sharepoint


【解决方案1】:

如果您想隐藏第 7 个 Web 部件,只需在初始化函数中添加 if (i == 7) WPToggle(WPid, ToggleId);。当您标记您的问题时,使用 jquery 稍微调整您的代码,因此我假设您可以使用它:

function WPToggle(thisId, ImageId) {
    var isVisible = $('#' + thisId).is(':visible');
    $('#' + thisId).toggle(!isVisible);

    var img = isVisible ?  'plus' : 'minus';
    $('#' + ImageId).attr('src', '/_layouts/images/' + img + '.gif');
}

function ExpandCollapseBody() {
    var i = 1;
    do {
        var WPid = 'WebPartWPQ' + i;
        var WPtitleid = 'WebPartTitleWPQ' + i;
        var Toggleid = 'ToggleImage' + i;
        var htmlImg = '<img id="' + Toggleid + '" alt="Expand/Collapse" style="margin:6px 5px 0px 2px; float:left; cursor:pointer;" src="/_layouts/images/minus.gif" />';
        var wpTitle = $('#' + WPtitleid).data('idx', i);
        wpTitle
            .html(htmlImg + wpTitle.html())
            .click(function() {
                var idx = $(this).data('idx');
                WPToggle('WebPartWPQ' + idx, 'ToggleImage' + idx);
            });
            if (i == 7) WPToggle(WPid, Toggleid);
        i++;
    } while ($('#WebPartWPQ' + i).length == 1)
}

_spBodyOnLoadFunctionNames.push("ExpandCollapseBody()");

【讨论】:

  • 嗨史蒂夫!非常感谢你的帮助。 FAQ 运行正常,但所有其他 Web 部件旁边都有一个折叠按钮。我怎样才能删除它?
  • 好的,您可以删除 do-while 循环并将函数的第一行更改为var i = 7;。这仅将代码应用于第 7 个 Web 部件。
  • 我取出 do-while 循环并在 ExpandCollapseBody 函数中更改了 var i = 7,现在没有显示任何按钮。我会继续调整。
  • 只是为了确保不要删除do-while循环的内容,只删除包含do {} while ($('#WebPartWPQ' + i).length == 1)的2行
猜你喜欢
  • 2016-11-18
  • 2011-11-09
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 2018-09-24
相关资源
最近更新 更多