如何使用JavaScript检查元素文本节点在视觉上是否为空?

时间:2018-08-18 05:30:01

标签: javascript regex removing-whitespace

我试图判断一个元素是否没有子元素并且在视觉上没有文本。检查它是否有孩子是容易的部分。

if ( element.children.length === 0 ) {
  // true
}

最困难的部分是处理没有可视指示器的文本节点。例如,当您使用以下代码检查元素时,其中包含‌的元素将返回值1:

element.innerText.trim().length

如果要删除所有不可见的字符,空格和换行符后没有可见的文本,我想将元素报告为空。我不相信.trim()还有其他选择,所以我认为进行正则表达式替换是最好的方法?

这就是我现在正在使用的:

element.innerText.replace( /(\h|\r|\n|\s|\t|\u0009|\u000a|\u000b|\u000c|\u000d|\u0020|\u0085|\u00a0|\u1680|\u2000|\u2001|\u2002|\u2003|\u2004|\u2005|\u2006|\u2007|\u2008|\u2009|\u200a|\u2028|\u2029|\u202f|\u205f|\u3000|\u180e|\u200b|\u200c|\u200d|\u2060|\ufeff|\u2800)/g, "")

除了\h|\r|\n|\s|t之外,我还从这里提取了字符:https://en.wikipedia.org/wiki/Whitespace_character

我不知道我的正则表达式是否详尽无遗,还是这里有些多余之处。

0 个答案:

没有答案