繁体   English   中英

Javascript 事件监听器更改段落文本 onclick 按钮不起作用?

[英]Javascript Event Listener to change paragraph text onclick of button doesn't work?

当我单击按钮时, <p>文本不会改变。

一条警报消息显示 output 和文本变量是正确的。 但是<p>的内部文本仍然没有改变。

查看输出图片

这是 HTML:

<input type="text" id="msg"><br>
<button onclick="Message()">Submit</button><br>
<h2>Last Message:</h2>
<p class="msg">Message</p>

这是JS:

function Message(){
    var text = document.getElementById("msg").value;
    var output = document.getElementsByClassName("msg")[0].innerHTML;
    
    output = text;
}

您必须将消息直接设置到 DOM 节点的innerHTML属性上。 固定示例:

 function Message() { var text = document.getElementById("msg").value; document.getElementsByClassName("msg")[0].innerHTML = text; }
 <input type="text" id="msg"><br> <button onclick="Message()">Submit</button><br> <h2>Last Message:</h2> <p class="msg">Message</p>

您将变量output定义为document.getElementsByClassName("msg")[0].innerHTML的值,然后您将output的值更改为text的值。

javascript 中的原语是按值传递的,而不是按引用传递的。

更改var output = document.getElementsByClassName("msg")[0].innerHTML;

document.getElementsByClassName("msg")[0].innerHTML = text

如果你说这样的话:

var output = document.getElementsByClassName("msg")[0].innerHTML;

output 的值将只是某种字符串或类似的。

然后,当您更改它时,您只需更改字符串的值而不是元素的值。

你想要做的是:

var output = document.getElementsByClassName("msg")[0];
output.innerHtml=text;
function Message(){
    var text = document.getElementById("msg").value;
    document.getElementsByClassName("msg").innerHTML = text;
}

你超级亲密。

var output = document.getElementsByClassName("msg")[0].innerHTML;中删除innerHTML

并在此处添加:

output.innerHTML = text;

所以它看起来像这样。

 <input type="text" id="msg"><br> <button onclick="Message()">Submit</button><br> <h2>Last Message:</h2> <p class="msg">Message</p> <script> function Message(){ var text = document.getElementById("msg").value; var output = document.getElementsByClassName("msg")[0]; output.innerHTML = text; } </script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM