更改按钮文本 onclick

Posted

技术标签:

【中文标题】更改按钮文本 onclick【英文标题】:Changing button text onclick 【发布时间】:2012-05-27 02:56:35 【问题描述】:

当我点击myButton1 按钮时,我希望值从Open Curtain 更改为Close CurtainHTML:

<input onclick="change()" type="button" value="Open Curtain" id="myButton1"></input>

Javascript:

function change();

    document.getElementById("myButton1").value="Close Curtain";

按钮现在显示开窗帘,我想把它改成关窗帘,对吗?

【问题讨论】:

【参考方案1】:
function change() 
 myButton1.value=="Open Curtain" ? myButton1.value="Close Curtain" : myButton1.value="Open Curtain";

【讨论】:

这与alphapilgrim 的this Answer 有什么不同?【参考方案2】:

我知道这是一篇旧帖子,但可以选择通过函数调用发送 elemd id:

<button id='expand' class='btn expand' onclick='f1(this)'>Expand</button>
<button id='expand' class='btn expand' onclick='f1(this)'>Expand</button>
<button id='expand' class='btn expand' onclick='f1(this)'>Expand</button>
<button id='expand' class='btn expand' onclick='f1(this)'>Expand</button>


function f1(objButton)
    
        if (objButton.innerhtml=="EXPAND") objButton.innerHTML = "MINIMIZE";
        else objButton.innerHTML = "EXPAND";
    

【讨论】:

【参考方案3】:

这段代码对我有用

  var btn = document.getElementById("your_btn_id");
    if(btn.innerText=="show")
       btn.innerText="hide";
      
    else
      btn.innerText="show";
      

在我的情况下使用值不起作用

【讨论】:

【参考方案4】:
var count=0;
document.getElementById("play").onclick = function()


if(count%2 =="1")

                document.getElementById("video").pause();
                document.getElementById("play").innerHTML ="Pause";
            else 

            document.getElementById("video").play();
            document.getElementById("play").innerHTML ="Play";

            
            ++count;

【讨论】:

【参考方案5】:

或者更简单,无需命名元素(带有'button'元素):

<button onclick="toggleLog(this)">Stop logs</button>

和脚本:

var bWriteLog = true;

function toggleLog(elt) 

  bWriteLog = !bWriteLog;
  elt.innerHTML = bWriteLog ? 'Stop logs' : 'Watch logs';

【讨论】:

【参考方案6】:

将此函数添加到脚本中

function myFunction() 

                var btn = document.getElementById("myButton");

                if (btn.value == "Open Curtain") 
                    btn.value = "Close Curtain";
                    btn.innerHTML = "Close Curtain";
                
                else 
                    btn.value = "Open Curtain";
                    btn.innerHTML = "Open Curtain";
                

            

并编辑按钮

<button onclick="myFunction()" id="myButton" value="Open Curtain">Open Curtain</button>

【讨论】:

【参考方案7】:

这对我来说很好。我有多个按钮,我想将输入值文本从“添加范围”切换到“删除范围”

<input type="button" onclick="if(this.value=='Add Range')  this.value='Remove Range';  else  this.value='Add Range'; " />

【讨论】:

【参考方案8】:

如果您更喜欢在 html 标记之外(在 javascript 中)绑定您的事件,您可以这样做:

document.getElementById("curtainInput").addEventListener(
  "click",
  function(event) 
    if (event.target.value === "Open Curtain") 
      event.target.value = "Close Curtain";
     else 
      event.target.value = "Open Curtain";
    
  ,
  false
);
<!doctype html>
<html>
<body>
  <input 
         id="curtainInput" 
         type="button" 
         value="Open Curtain" />
</body>

</html>

【讨论】:

【参考方案9】:

当使用&lt;button&gt; 元素(或者可能是其他元素?)时,设置“值”不会更改文本,但innerHTML 会。

var btn = document.getElementById("mybtn");
btn.value = 'my value'; // will just add a hidden value
btn.innerHTML = 'my text';

打印到控制台时:

&lt;button id="mybtn" class="btn btn-primary" onclick="confirm()" value="my value"&gt;my text&lt;/button&gt;

【讨论】:

这对我很有帮助。效果很好。在我看来,所有这些中最简单最直接的答案。 innerHTML 更改按钮的视觉文本。 value="" 不可见,只保存隐藏数据。谢谢老兄。【参考方案10】:
<!DOCTYPE html>
<html>
    <head>
      <title>events2</title>
    </head>
    <body>
      <script>
        function fun() 
          document.getElementById("but").value = "onclickIChange";
         
      </script>
      <form>
        <input type="button" value="Button" onclick="fun()" id="but" name="but">
    </form>
  </body>
</html>

【讨论】:

【参考方案11】:

如果不反对或者可能已经在使用 jQuery,你可以做到这一点,而不必使用突兀的 js。希望能帮助到你。 https://en.wikipedia.org/wiki/Unobtrusive_JavaScript 也想参考,https://***.com/a/3910750/4812515 对此进行讨论。

HTML:

    <input type="button" value="Open Curtain" id=myButton1"></input>

Javascript:

          $('#myButton1').click(function() 
            var self = this;
            change(self);
         );

          function change( el ) 
           if ( el.value === "Open Curtain" )
           el.value = "Close Curtain";
           else
           el.value = "Open Curtain";
          

【讨论】:

【参考方案12】:

这可以通过 vbs 代码轻松完成(因为我对 js 不太熟悉)

<input type="button" id="btn" Value="Close" onclick="check">
<script Language="VBScript">
sub check
if btn.Value="Close" then btn.Value="Open" 
end sub
</script>

你已经完成了,但是这会将名称更改为仅显示并且不会更改功能 onclick ,我对如何执行第二个进行了一些研究,似乎没有类似的东西

btn.onclick = ".."

但我想出了一个使用 标签的方法,它是这样的:

<script Language="VBScript">
  Sub function1
  MsgBox "function1"
  span.InnerHTML= "<Input type=""button"" Value=""button2"" onclick=""function2"">"
  End Sub

   Sub function2
  MsgBox "function2"
  span.InnerHTML = "<Input type=""button"" Value=""button1"" onclick=""function1"">"
  End Sub
  </script>
  <body>
  <span id="span" name="span" >
  <input type="button" Value="button1" onclick="function1">
  </span>
  </body>

自己试试吧,修改sub function1和sub function2中的代码,基本上jscript中你只需要知道这行就行了

span.InnerHTML = "..." 

剩下的就是你要执行的代码

希望这会有所帮助:D

【讨论】:

你可以用 或 改变 .... 任何允许你在里面写代码的标签【参考方案13】:
<input type="button" class="btn btn-default"  value="click me changtext"               id="myButton1" onClick="changetext()"  >

            <script>
            function changetext() 
                 var elem = document.getElementById("myButton1");
                if (elem.value=="click me change text")
                     
                        elem.value = "changed text here";
                    
                else
                 
                     elem.value = "click me change text";
                 
            
            </script>

【讨论】:

【参考方案14】:
This is simple way to change Submit to loading state   

 <button id="custSub" type="submit" class="button left tiny" data-text-swap="Processing.. &nbsp;">Submit &nbsp;<i class="fa fa-angle-double-right"></i></button>


    <script>
    jQuery(document).ready(function ($) 

        $("button").on("click", function() 
          var el = $(this);
          if (el.html() == el.data("text-swap")) 
            el.html(el.data("text-original"));
           else 
            el.data("text-original", el.html());
            el.html(el.data("text-swap"));
          
          setTimeout(function () 
                el.html(el.data("text-original"));
           , 500);
        );

    );
    </script>

【讨论】:

【参考方案15】:

有很多方法。这在所有浏览器中也应该有效,并且您不必再使用 document.getElementById 因为您将元素本身传递给函数。

<input type="button" value="Open Curtain" onclick="return change(this);" />

<script type="text/javascript">
function change( el )

    if ( el.value === "Open Curtain" )
        el.value = "Close Curtain";
    else
        el.value = "Open Curtain";

</script>

【讨论】:

【参考方案16】:

试试这个,

<input type="button" id="myButton1" value="Open Curtain" onClick="javascript:change(this);"></input>
<script>
function change(ref) 
    ref.value="Close Curtain";

</script>

【讨论】:

您不需要 javascript: 在 onClick 中 - 仅在 href="javascript:"【参考方案17】:

似乎只是一个简单的拼写错误:

    去掉change()后的分号,里面不应该有 函数声明。 在 myButton1 声明前添加引号。

更正的代码:

<input onclick="change()" type="button" value="Open Curtain" id="myButton1" />
...
function change()

    document.getElementById("myButton1").value="Close Curtain"; 

更快、更简单的解决方案是在按钮中包含代码并使用关键字 this 来访问按钮。

<input onclick="this.value='Close Curtain'" type="button" value="Open Curtain" id="myButton1" />

【讨论】:

【参考方案18】:

如果我正确理解了您的问题,您想在“打开窗帘”和“关闭窗帘”之间切换 - 如果关闭,则更改为“打开窗帘”,反之亦然。如果这是您需要的,这将起作用。

function change() // no ';' here

    if (this.value=="Close Curtain") this.value = "Open Curtain";
    else this.value = "Close Curtain";

请注意,您不需要在更改中使用 document.getElementById("myButton1"),因为它在 myButton1context 中被调用——我的意思是您稍后会知道的上下文,关于阅读关于 JS 的书籍。

更新

我错了。不像我之前说的,this 不会引用元素本身。你可以使用这个:

function change() // no ';' here

    var elem = document.getElementById("myButton1");
    if (elem.value=="Close Curtain") elem.value = "Open Curtain";
    else elem.value = "Close Curtain";

【讨论】:

不使用“onClick”,Parth。您必须传递对对象的引用: onClick="change(this)" 然后在 JS 中: function change(button) print button.value; 哦,是的...正确。我认为它会起作用,但是当我看到你的评论时,我把它弄乱了,它失败了……我只是做一个编辑 @ParthThakkar on Chrome this 确实设置为按钮。 恐怖!我刚试了chrome,不行。它指的是 DOMWindow 在我自己遇到了一些问题(并意识到我只是有一个语法错误)之后,这就是我发现的工作:this.innerHTML =。在 Firefox v28 中使用 this.value 对我不起作用。这是一个实际的按钮元素,而不是输入按钮。【参考方案19】:

您在 id= 上缺少一个开头引号,并且函数声明后有一个分号。另外,输入标签不需要结束标签。

这行得通:

<input onclick="change()" type="button" value="Open Curtain" id="myButton1">

<script type="text/javascript">
function change()

document.getElementById("myButton1").value="Close Curtain";

</script>

【讨论】:

以上是关于更改按钮文本 onclick的主要内容,如果未能解决你的问题,请参考以下文章

更改/删除远程通知上的按钮或按钮文本[重复]

通过单击按钮交替更改圆形按钮背景和文本

如何在 jQuery 中更改按钮的文本?

如何在 appdelegate 上更改后退按钮的文本

更改 IOS 完成按钮文本

如何在引导程序 4 折叠按钮中更改按钮文本