如何在JavaScript中更改按钮文本或链接文本?

tem*_*mpy 34 html javascript button

我有这个HTML按钮:

<button id="myButton" onClick="lock(); toggleText(this.id);">Lock</button>
Run Code Online (Sandbox Code Playgroud)

这是我的toggleTextJavaScript功能:

function toggleText(button_id) 
{
   if (document.getElementById('button_id').text == "Lock") 
   {
       document.getElementById('button_id').text = "Unlock";
   }
   else 
   {
     document.getElementById('button_id').text = "Lock";
   }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,button text(<button id="myButton">Lock</button>)就像任何链接文本
(<a href="#">Lock</a>)一样.所以它是一个按钮并不重要.但是,我无法访问按钮文本并进行更改.

我试过('button_id'),(button_id),== "Lock",== 'Lock',但没有任何工程.

如何访问和更改按钮文本(非值)或链接文本?

I H*_*azy 57

更改.text.textContent获取/设置文本内容.

或者,由于您正在处理单个文本节点,因此请.firstChild.data以相同的方式使用.

另外,让我们合理使用变量,享受一些代码减少,并通过缓存结果来消除冗余的DOM选择getElementById.

function toggleText(button_id) 
{
   var el = document.getElementById(button_id);
   if (el.firstChild.data == "Lock") 
   {
       el.firstChild.data = "Unlock";
   }
   else 
   {
     el.firstChild.data = "Lock";
   }
}
Run Code Online (Sandbox Code Playgroud)

或者更紧凑像这样:

function toggleText(button_id)  {
   var text = document.getElementById(button_id).firstChild;
   text.data = text.data == "Lock" ? "Unlock" : "Lock";
}
Run Code Online (Sandbox Code Playgroud)

  • @tempy:它非常快,并且跨浏览器兼容.人们使用`.innerHTML`,因为在某些浏览器中没有实现DOM标准`.textContent`,尤其是旧的IE.但是`.innerHTML`是一个HTML解析器,所以它有点像一种hackish方式.直接使用文本节点非常干净. (5认同)

elc*_*nrs 19

document.getElementById(button_id).innerHTML = 'Lock';
Run Code Online (Sandbox Code Playgroud)

  • 不要在“ button_id”周围加上引号。 (2认同)

Cal*_*ean 5

您可以简单地使用:

document.getElementById(button_id).innerText = 'Your text here';

如果要使用 HTML 格式,请改用innerHTML属性。