1

我正在使用其中的一部分Javascript,使用户能够h3在我的 HTML 文档中展开标签。但是当我第一次刷新页面时,它工作得很好,然后当我第二次刷新页面时,标题再次展开。

我希望它只是保持扩展而不是收缩,但我不确定我可能需要对代码进行哪些更改:

我应该指出,当用户第一次访问页面时,标题已经展开。我通过从body标签内调用函数来做到这一点。

<body onLoad="expandcontent('sc1')">

这是代码:

var enablepersist = "on" //Enable saving state of content structure using session cookies? (on/off)
var collapseprevious = "yes" //Collapse previously open content when opening present? (yes/no)

if (document.getElementById) {
    document.write('<style type="text/css">')
    document.write('.switchcontent{display:none;}')
    document.write('</style>')
}

function getElementbyClass(classname) {
    ccollect = new Array()
    var inc = 0
    var alltags = document.all ? document.all : document.getElementsByTagName("*")
    for (i = 0; i < alltags.length; i++) {
        if (alltags[i].className == classname)
            ccollect[inc++] = alltags[i]
    }
}

function contractcontent(omit) {
    var inc = 0
    while (ccollect[inc]) {
        if (ccollect[inc].id != omit)
            ccollect[inc].style.display = "none"
        inc++
    }
}

function expandcontent(cid) {
    if (typeof ccollect != "undefined") {
        if (collapseprevious == "yes")
            contractcontent(cid)
        document.getElementById(cid).style.display = (document.getElementById(cid).style.display != "block") ? "block" : "none"
    }
}

function revivecontent() {
    contractcontent("omitnothing")
    selectedItem = getselectedItem()
    selectedComponents = selectedItem.split("|")
    for (i = 0; i < selectedComponents.length - 1; i++)
        document.getElementById(selectedComponents[i]).style.display = "block"
}

function get_cookie(Name) {
    var search = Name + "="
    var returnvalue = "";
    if (document.cookie.length > 0) {
        offset = document.cookie.indexOf(search)
        if (offset != -1) {
            offset += search.length
            end = document.cookie.indexOf(";", offset);
            if (end == -1) end = document.cookie.length;
            returnvalue = unescape(document.cookie.substring(offset, end))
        }
    }
    return returnvalue;
}

function getselectedItem() {
    if (get_cookie(window.location.pathname) != "") {
        selectedItem = get_cookie(window.location.pathname)
        return selectedItem
    } else
        return ""
}

function saveswitchstate() {
    var inc = 0,
        selectedItem = ""
    while (ccollect[inc]) {
        if (ccollect[inc].style.display == "block")
            selectedItem += ccollect[inc].id + "|"
        inc++
    }

    document.cookie = window.location.pathname + "=" + selectedItem
}

function do_onload() {
    uniqueidn = window.location.pathname + "firsttimeload"
    getElementbyClass("switchcontent")
    if (enablepersist == "on" && typeof ccollect != "undefined") {
        document.cookie = (get_cookie(uniqueidn) == "") ? uniqueidn + "=1" : uniqueidn + "=0"
        firsttimeload = (get_cookie(uniqueidn) == 1) ? 1 : 0 //check if this is 1st page load
        if (!firsttimeload)
            revivecontent()
    }
}


if (window.addEventListener)
    window.addEventListener("load", do_onload, false)
else if (window.attachEvent)
    window.attachEvent("onload", do_onload)
else if (document.getElementById)
    window.onload = do_onload

if (enablepersist == "on" && document.getElementById)
    window.onunload = saveswitchstate
4

0 回答 0