0
<script type="text/javascript">
    function ToggleList(IDS) {
        var CState = document.getElementById(IDS);
        if (CState.style.display != "block") { CState.style.display = "block"; }
        else { CState.style.display = "none"; }
    }

</script>
<style type="text/css">
    .divInfo
    {
        display: none;
    }
</style>

<p>Text</p>
<a onclick="ToggleList('LT3')">Show More</a>
</p>
<div id="LT3" class="divInfo">
<p>Additional Test</p>
</div>

这很好用,但我希望在展开切换时将标签“显示更多”更改为“隐藏”。关于如何做到这一点的任何想法?CState.innertext = "隐藏" ?

4

4 回答 4

3

要获得浏览器兼容性,请创建如下变量:

var text = 'textContent' in document ? 'textContent' : 'innerText';

然后像这样使用它:

CState[text] = "New Text Content";

但似乎您想更改 的标签,而<a>不是<div>. 所以你会对你的 HTML 这样做:

<a onclick="ToggleList(this, 'LT3')">Show More</a>

然后这个给你的JS:

var text = 'textContent' in document ? 'textContent' : 'innerText';

function ToggleList(anchor, IDS) {
    var CState = document.getElementById(IDS);
    if (CState.style.display != "block") { 
        CState.style.display = "block";
        anchor[text] = "Hide";
    } else { 
        CState.style.display = "none"; 
        anchor[text] = "Show More";
    }
}

演示:http: //jsfiddle.net/RRUEY/

于 2012-11-05T21:28:44.033 回答
3

函数中的 CState 对象是对 DIV 的引用。您应该做的是给锚标记一个 ID,然后更改其中的文本。

function ToggleList(anchorID, IDS) {
    var CState = document.getElementById(IDS);
    var anchor = document.getElementByID(anchorID);

    if (CState.style.display != "block") {
        CState.style.display = "block";
        anchor.innerHTML = "Hide";
    } else {
       CState.style.display = "none";
       anchor.innerHTML = "Show more";
    }
}

您的锚标记将如下所示:

<a id="listToggle" onclick="ToggleList('listToggle', 'LT3')">Show More</a>
于 2012-11-05T21:41:34.203 回答
1

将 的引用传递<a>给函数,然后稍微重构函数以根据可见性重新标记它:

function ToggleList(anchor,IDS) {
  var CState = document.getElementById(IDS);
  var isVisible = (CState.style.display == "block");

  anchor.innerHTML = isVisible ? 'Show more' : 'Hide';
  CState.style.display = isVisible ? 'none' : 'block';
}

修改后的 HTML:

<a onclick="ToggleList(this,'LT3')">Show More</a>
于 2012-11-05T21:30:58.297 回答
1

我相信您会想要在标签中添加一个 id,例如:

<a id='txtShowMore' onclick="ToggleList('LT3')">Show More</a>

然后有这个脚本:

var showMoreElement = document.getElementByID('txtShowMore');
showMoreElement.innerHTML = "Hide";

当然,当你隐藏它时,将它设置回“显示更多”也是一样的。

于 2012-11-05T21:32:18.013 回答