【问题标题】:How to change toggle button text when pressed?按下时如何更改切换按钮文本?
【发布时间】:2013-04-10 13:46:34
【问题描述】:

我希望能够按下一个显示“隐藏”的按钮,然后在用户单击该按钮时说“显示”。在下面的代码中,切换部分有效,但现在我需要在隐藏内容后将“隐藏”文本变为“显示”。

我的切换代码来自:http://thedesignspace.net/MT2archives/000298.html#.UW61YqKG33U

 <script type="text/javascript">
    function toggle(element) {
    document.getElementById(element).style.display = (document.getElementById(element).style.display == "none") ? "" : "none";
    }
    </script>

    <div class="ISBody">
     <h5>Header</h5>
     <div class="ISTopLink"><a href="#ISTop">Return to Top</div>
     <div class="ISHide"><a href="javascript:toggle('pos')">Hide Products - </a></div>
     <hr>
     <div id="pos" style="display: block;">
      <div class="ISProductBody">
       <div class="ISSubHead"><A HREF="#">Prodcut Name</A></div>
      <div class="ISList">
       <ul>
        <li>Text here</li>
        <li>Text here</li>
        <li>Text here</li>
        <li>Text here</li>
      </ul>
      </div>
    </div>
    </div>

【问题讨论】:

标签: javascript jquery toggle togglebutton


【解决方案1】:

将您的按钮代码更改为以下内容:

<div class="ISHide" onclick="toggle(this)"><a href="#" >Hide Products</a></div>

把你的脚本改成这样

<script type="text/javascript">
function toggle (t) {
if (t.childNodes[0].innerHTML == "Hide Products") {
    t.childNodes[0].innerHTML = "Show Products";
} else {
    t.childNodes[0].innerHTML = "Hide Products";
}
}
</script>

【讨论】:

【解决方案2】:

由于您的问题被标记为 jQuery,请使用 jQuery:

<div class="ISHide"><a href="#" class="hideLink">Hide Products - </a></div>


$(".hideLink").on("click", function(){
    if($(this).text()=="Hide Products - ")
    {
        $(this).text("Show Products - ");
    } else {
        $(this).text("Hide Products - ");
    }
    $(".ISProductBody").toggle(); 

    return false;
});

示例:http://jsfiddle.net/calder12/KCj3r/

【讨论】:

    【解决方案3】:

    我的“答案”是对 Rick Calder 答案的修改。我使用了为类似场景提供的代码,但它在按钮内有 HTML 标记(在本例中为 Font Awesome 图标)。我认为它可能会帮助某些人将解决方案应用于其他情况。

    我必须做的唯一修改是将“.text”更改为“.html”并添加“.addClass”/“.removeClass”以更改按钮样式。 (不包括 CSS,因为它在这里很简单。)

    这是我使用的代码:

    $(".expand-button .button").on("click", function(){
        if($(this).html()==" Watch Video <i class=\"fa fa-play\"></i> ")
        {
            $(this).html(" Hide Video <i class=\"fa fa-times\"></i> ");
            $(this).addClass("secondary");
        } else {
            $(this).html(" Watch Video <i class=\"fa fa-play\"></i> ");
            $(this).removeClass("secondary");
        }
        $(".expand-button-content").fadeToggle();
    });
    

    谢谢你,Rick 和 OP。

    【讨论】:

      【解决方案4】:
      var button = document.querySelector(".button")
      var text   = document.querySelector(".text")
      var t
      button.addEventListener("click",function(){
      
      
          if(text.textContent=="Like"){
              t = "Liked"
          }
          else{
              t="Like"
          }
          text.textContent=t;
      })
      

      这是一个“喜欢”按钮的示例,该按钮更改为“喜欢”。 该方法非常简单,如果文本是 Like,则将变量 t 设置为“liked”,反之亦然,然后 t 替换文本内容。 为我工作 干杯, :D

      【讨论】:

      • 添加一些解释,说明此答案如何帮助 OP 解决当前问题
      【解决方案5】:

      TextBox.innerHTML = " ";
      ButtonId.onclick = function(){
      if (TextBox.innerHTML == " ") {
      TextBox.innerHTML = "HI";
      }
      else {
      TextBox.innerHTML = " ";
      }
      }
      <a href="http://fbgadgets.blogspot.com/2014/01/link-change-into-button.html">ReadMore:</a>
      <img id="ButtonId" src="https://www.w3schools.com/tags/smiley.gif" width="107" height="98">
      <p id="TextBox"> </p>

      【讨论】:

      • 对代码的解释将有助于更好地回答
      猜你喜欢
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多