我想限制字符串在JS更新时的长度。为此,我希望使用一个循环来检查当前字符串的长度,并且只在字符串小于最大长度时接受新的输入。
由于某种原因,当我请求html元素的长度时,它返回.元素的性质?
具体如下: object HTMLParagraphElement
我是这样得到html元素的:
const digits = document.getElementById("digits");这就是我试图限制大小的方法,我标记了我目前用来添加数字的行(它自己工作,我只想限制字符串的长度):
addEventListenerList(numeral, "click", () => {
if (digits.toString().length > 10){ //(*)
return null;
} else {
digits.innerText += event.target.value; //This is the line that adds numbers.
}
});所以是的,它不能工作,因为行(*)发现当前长度是29 (对象HTMLParagraphElement的长度)。我不知道如何得到内容的长度,而不是这个.这到底是什么?
我不知道它是否有用,但以防万一,数字是我使用以下方法迭代的节点列表:
function addEventListenerList(list, event, fn){
for (let i = 0, len = list.length; i < len; i++) {
list[i].addEventListener(event, fn);
}
}发布于 2019-08-14 13:56:54
解决这一问题的最直接方法是使用digits.textContent.length > 10而不是digits.toString()。然而,正如其他人所指出的,digits.value.length和/或digits.innerHTML.length在某些情况下可能是相关的。
innerHTML在这里不那么可取,因为嵌套的html对象或格式标记类似于或将作为计算长度的一部分。它还使用比.textContent更多的内存。有关差异的更长时间讨论,请参见innerText vs innerHtml vs label vs text vs textContent vs outerText。
发布于 2019-08-14 13:58:50
您将元素分配给变量而不是它的内容,以获得内容的长度取决于它是什么元素类型。
如果它是一个输入,那么您可以得到以下值:
digits.value.length 如果它是另一种类型,则可以使用innerHTML属性:
digits.innerHTML.length https://stackoverflow.com/questions/57496084
复制相似问题