1

我一直在研究 Show/Hide javascript,并通过鼠标悬停效果进一步推动它以实现我想要的。我已经设置了一个 Fiddle 以获得更好的可访问性。但是,我现在想通过最多 4 个不同的文本区域来推送它(“单击此处获取更多信息”),并且每个文本区域都会有更多的悬停文本,因为我试图在 HTML 代码本身中显示。我现在使用和编辑的 javascript 具有对应于“0”和“1”的“ID”,这不适用于我当前的 HTML 代码,因为它具有像“uu3308-10”(使用 Adob​​e Muse 制作)这样的时髦名称。现在,我想知道我必须在 Javascript 中更改哪些变量才能使其正常运行,有没有办法编译此代码,以便它与至少 11 个其他“单击此处获取更多信息”一起使用

注意:当前的 javascript 使 showMoreText2 出现在两个 showMoreText 区域下(希望一次只出现一个悬停文本)。

单击此处获取小提琴-> http://jsfiddle.net/TPLOR/vy6nS/

谢谢,我希望这有足够的帮助。=)

4

1 回答 1

1

有点hackish:(见http://jsfiddle.net/vy6nS/30/

window.onload = function() {
    var elems1 = document.getElementsByClassName("expander");
    for (i = 0; i < elems1.length; i++) {
        elems2 = elems1[i].childNodes;
        for (x = 0; x < elems2.length; x++) {
            if (elems2[x].className == "toggle") elems2[x].onclick = function() {
                showMore(0, this);
            };
            else if (elems2[x].className == "showMoreText") {
                elems2[x].onmouseover = function() {
                    showChilds("block", this);
                };
                elems2[x].onmouseout = function() {
                    showChilds("none", this);
                };
            }
        }
    }
};

function get_nextsibling(n) {
    x = n.nextSibling;
    while (x.nodeType != 1) {
        x = x.nextSibling;
    }
    return x;
}

function showChilds(disp, elem) {
    get_nextsibling(elem).style.display = disp;
}

function showMore(disp, elem) {
    var children = elem.parentNode.childNodes;
    for (i = 0; i < children.length; i++) {
        if (disp == 0 && children[i].className == "showMoreText") {
            children[i].style.display = children[i].style.display == "none" ? "block" : "none";
        }
    }

}​
于 2012-07-12T18:08:08.920 回答