为啥我不能为变量 x 赋值

Posted

技术标签:

【中文标题】为啥我不能为变量 x 赋值【英文标题】:Why can I not assign a value to the variable x为什么我不能为变量 x 赋值 【发布时间】:2021-09-14 13:38:59 【问题描述】:

我有一个麻烦的情况:我想要将值“hi”重新分配给 x 变量,但是我目前正在尝试的方法不起作用:

<script>
function hello()
    let x = document.getElementById("post-title").innerhtml
    x = 'hi'

</script>

但是,如果我这样做,它会起作用:

document.getElementById("post-title").innerHTML = 'hi'

为什么使用命名变量时不起作用?

【问题讨论】:

x 只是一个字符串。它不保留对元素的任何引用。您可以将元素获取到 x 并将其更新为 innerHTML:let x= document.getElementById("post-title"); x.innerHTML = 'hi' 这能回答你的问题吗? Setting a variable equal to another variable x 只保存从 DOM 元素中检索到的 innerHTML 值。修改变量的值不会影响从中检索它的元素。要改变 DOM,您需要显式调用来改变它(没有自动的双向数据绑定)。您可以研究 Vue.js 或 React.js 等框架,因为它们提供的主要功能之一是管理状态以在您对代码中的数据进行更改时保持 DOM 元素同步。 @MichaelHorn:感谢您想在这里编辑问题。但是,我们通常会删除 please-help-me begging,我们不会对其进行编辑。需要的表达往往不鼓励使用技术写作。如果你是用原版发帖者的声音写作,请使用“我怎么能……”和“我能……什么”。 这能回答你的问题吗? Setting innerHTML: Why won't it update the DOM? 【参考方案1】:

innerHTML 返回一个字符串。因此,您更新并不意味着您更新 DOM 元素 html。

你可以通过这些方式实现。

document.getElementById("post-title").innerHTML = "hi"
x = document.getElementById("post-title")
x.innerHTML = "hi"

【讨论】:

当然,哈哈,我刚开始学习 javascript,所以我知道这个令人毛骨悚然的问题。

以上是关于为啥我不能为变量 x 赋值的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能为具有相同名称的命名函数表达式中的变量赋值?

为啥我不能在方法之外进行赋值?

c语言中,为啥不能对字符指针变量指向的字符串再赋值?

为啥不能在用 let 和 const 声明变量之前进行赋值? [复制]

为啥 vue.js 的 data 中定义的变量不能赋值给对象?

c语言char和int可以互相赋值,但指针不能赋值,char *和int *不能直接赋值,为啥呢?谢谢