使用JavaScript更改标签文本

phi*_*owe 81 html javascript label innerhtml

为什么以下不适合我?

<script>
    document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Run Code Online (Sandbox Code Playgroud)

Kon*_*rak 121

因为您的脚本在页面上存在标签之前运行(在DOM中).将脚本放在标签之后,或者等到文档完全加载(使用OnLoad函数,例如jQuery ready()http://www.webreference.com/programming/javascript/onloads/)

这不起作用:

<script>
  document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
<label id="lbltipAddedComment">test</label>
Run Code Online (Sandbox Code Playgroud)

这将有效:

<label id="lbltipAddedComment">test</label>
<script>
  document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
Run Code Online (Sandbox Code Playgroud)

这个例子(jsfiddle链接)维护顺序(首先是脚本,然后是标签)并使用onLoad:

<label id="lbltipAddedComment">test</label>
<script>
function addLoadEvent(func) {  
      var oldonload = window.onload;  
      if (typeof window.onload != 'function') {  
        window.onload = func;  
      } else {  
        window.onload = function() {  
          if (oldonload) {  
            oldonload();  
          }  
          func();  
        }  
      }  
    }  

   addLoadEvent(function() {  
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';

    });  
</script>
Run Code Online (Sandbox Code Playgroud)

  • 好吧@PaulTaylor,这个答案自 2010 年以来就在这里,有 92 票赞成(现在是反对票)。这个问题使用了innerHTML,所以我只改变了让他的代码移动所必需的东西。虽然我觉得提出额外的想法总是可以的(“嘿,顺便说一句,使用 textcontent 而不是 innerhtml/innertext),但这不是 OP 的问题......没有必要投票。 (2认同)

Gor*_*onM 19

你试过.innerText还是.value代替.innerHTML

  • .value不适用于标签 - 给出未定义的输出 (7认同)

mvl*_*dic 16

因为执行脚本时未加载标签元素.交换标签和脚本元素,它将工作:

<label id="lbltipAddedComment"></label>
<script>
    document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
Run Code Online (Sandbox Code Playgroud)


Poc*_*chi 9

.textContent改用.

我也在努力改变标签的价值,直到我尝试了这一点.

如果这没有解决,请尝试检查对象以查看可以通过将其登录到控制台来设置哪些属性console.dir,如此问题所示:如何将HTML元素记录为JavaScript对象?

  • @AndrewWillems 不幸的是`.textContent` 和`.innerText`(虽然很适合阅读),但不适用于我的firefox60 进行写作(它还删除了嵌入的输入字段,就像`.innerHTML` 一样)。所以我不得不求助于`document.getElementById('myLabel').childNodes[0].nodeValue="new label text"`(当然,索​​引可能不是0,这使得有点混乱,但为我工作) (2认同)

小智 8

使用.innerText应该工作.

document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';
Run Code Online (Sandbox Code Playgroud)


mus*_*ria 8

这是使用 jQuery 更改标签文本的另一种方法:

<script>
  $("#lbltipAddedComment").text("your tip has been submitted!");
</script>
Run Code Online (Sandbox Code Playgroud)

检查JsFiddle 示例