首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当我按ID调用该元素时不获取它的内容?

问为什么当我按ID调用该元素时不获取它的内容?
EN

Stack Overflow用户
提问于 2019-08-14 13:51:14
回答 2查看 47关注 0票数 0

我想限制字符串在JS更新时的长度。为此,我希望使用一个循环来检查当前字符串的长度,并且只在字符串小于最大长度时接受新的输入。

由于某种原因,当我请求html元素的长度时,它返回.元素的性质?

具体如下: object HTMLParagraphElement

我是这样得到html元素的:

代码语言:javascript
复制
const digits = document.getElementById("digits");

这就是我试图限制大小的方法,我标记了我目前用来添加数字的行(它自己工作,我只想限制字符串的长度):

代码语言:javascript
复制
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的长度)。我不知道如何得到内容的长度,而不是这个.这到底是什么?

我不知道它是否有用,但以防万一,数字是我使用以下方法迭代的节点列表:

代码语言:javascript
复制
function addEventListenerList(list, event, fn){
    for (let i = 0, len = list.length; i < len; i++) {
        list[i].addEventListener(event, fn);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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。

票数 2
EN

Stack Overflow用户

发布于 2019-08-14 13:58:50

您将元素分配给变量而不是它的内容,以获得内容的长度取决于它是什么元素类型。

如果它是一个输入,那么您可以得到以下值:

代码语言:javascript
复制
digits.value.length 

如果它是另一种类型,则可以使用innerHTML属性:

代码语言:javascript
复制
digits.innerHTML.length 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57496084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档