我正在制作一个注册表单,并希望在另一个元素中显示错误,如果输入不符合条件。
如果我写出以下代码,它将不执行任何操作,但如果我像这样编写代码:
//input element
let field = document.getElementById("field").value.trim();
//div for showing error
let field_error = document.getElementById("field_error").textContent;
if(field.length > 30){
field_error = "Input too long";
}
如果我写出以下代码,它将不执行任何操作,但如果我像这样编写代码:
let field_error = document.getElementById("field_error");
if(field.length > 30){
field_error.textContent = "Input too long";
}
为什么我不能像我在 field
和 .value.trim()
中一样声明一个名为field_error
的变量,而是后来再使用.textContent
呢?
.textContent
计算出一个string
,这个string
本身是primitive。所以当你把field_error
赋值给它的时候,它只是一个副本(按值传递),而不是一个引用。改变它只会影响它本身,而不会影响DOM。 - ambianBeing<small>
。我明白我做错了什么,谢谢你的回答。 - sofronijev