javascript - 更改元素的文本内容
问题描述
我正在制作一个注册表格,如果输入与条件不匹配,我想在另一个元素中显示错误。
//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_error
,.textContent
就像我用field
and做的那样.value.trim()
,而是.textContent
稍后使用?
解决方案
该textContent
属性实际上更像是一个getter/setter,可能在get 上应用一个转换(例如,每个子节点的textContent 的串联)。
在您的第一种情况下field_error
,指向该 get 的结果(现在与#field_error
元素无关),因此进行更改不会影响原始对象。
field
同样无法设置您的值(以更新#field
元素),因为它是该值的操纵副本......而不是指向 DOM 元素的指针。
推荐阅读
- html - 使元素居中并放大它?
- spring-boot - XMLGregorianCalendar 在使用 GSON 时正在更改格式
- python - 如何在 django 中将字符串作为输入?
- reactjs - 如何让 SwitchTranition 与带有 TypeScript 的 CSSTransition 一起使用
- excel - 如何对每 n 行中的单元格求和,用于 3 组值
- python - 简单的 python 舞台游戏问题(没有 graphyx)
- javascript - 如何在猫鼬中引用另一个模型的字段
- java - setter 是否自动为实体类生成休眠查询
- excel - Excel:删除开头和结尾的单词
- c# - 在 C# .NET Core 中读取 .lnk 文件的目标?