3

我的功能:

function ChangeStep(id)
{
    var i = 1;

    // hide all other tabs:
    while(i<10) {
        var divID = 'tabs' + i;
        if (divID !== null) {
            document.getElementById(divID).className += " hide";
        }
        i++;
    }

    // show this one
    document.getElementById(id).className += " show";
}

我怎么称呼它:

<div id="prev"><img src="img/prv.png" onClick="ChangeStep('tabs1'); return false;"></div>
<div id="next"><img src="img/nxt.png" onClick="ChangeStep('tabs2'); return false;"></div>

我要显示/隐藏的 div:

<div id="tabs1" class="hide"><h1>Step 1</h1></div>
<div id="tabs2" class="show"><h1>Step 2</h1></div>

我的CSS:

.hide { visibility: hidden; }
.show { visibility: visible; }

基本上我想做的是:当我单击下一步或上一个时,通过隐藏所有其他选项并显示它来显示相应的“选项卡”。这应该通过添加类“隐藏”或“显示”来完成,具体取决于它是隐藏还是可见。

4

1 回答 1

6

您总是在附加类名,因此它们将(在显示一次之后)成为showhide类的成员,并且两个规则集都将适用(以正常的级联顺序)。

如果您不需要维护任何其他类,则可以用+=简单的赋值替换附加运算符:=

如果您确实需要在元素上维护其他类,则可以classList改用。

document.getElementById(divID).classList.remove('show');
document.getElementById(divID).classList.add('hide');

如果您需要支持 Old-IE,那么您可以使用 polyfill(可能会在 上运行正则表达式classList)或提供类似功能的 API。大多数常见的 JS 库(例如 YUI 和 jQuery)都内置了一个。

于 2013-06-02T20:28:55.963 回答