Javascript 单击按钮更改段落文本的事件侦听器不起作用?

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

单击按钮时 <p> 文本没有改变。

一条警告消息显示输出和文本变量正确。但是 <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;
}

您将变量 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;

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

然后当你改变它时,你只是改变了字符串的值而不是元素。

你要做的是:

var output = document.getElementsByClassName("msg")[0];
output.innerHtml=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>

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>