更改元素的textContent

索夫罗涅耶夫

我正在注册表格,如果输入的条件不匹配,我想在另一个元素中显示错误。

//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.value.trim(),而不是使用.textContent以后呢?

汝都

textContent属性实际上更像一个getter / setter操作,可能对get应用转换(例如,每个子节点的textContent的串联)。

在您的第一种情况下field_error,指向该get的结果(现在与该#field_error元素无关),因此进行更改不会影响原始对象。

field同样,您的值也无法设置(以更新#field元素),因为它是值的受控副本。不是指向DOM元素的指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章