gpt4 book ai didi

javascript - 空

元素实际上不是空的? Ascii 控制字符?

转载 作者:行者123 更新时间:2023-11-28 02:50:26 25 4
gpt4 key购买 nike

我正在使用 JavaScript 遍历对象数组。如果对象有 1 个或多个不为 null 或空的值,则 <p>元素被创建,然后附加到容器元素。

var tempElem = document.createElement("P");

if( item.valueOne !== '' )
tempElem.innerHTML += item.valueOne;
if( item.valueTwo !== '' )
tempElem.innerHTML += item.valueTwo;

if( tempElem.innerHTML !== '' )
containerElem.appendChild(tempElem);

上面确实过滤掉了大部分空条目,但是有一些以某种方式进入了页面。
在 chrome 上,它准确显示 <p></p>
我已经做了一些分析,在最后一个 if 语句之前......

typeof tempElem.innerHTML = string
tempElem.innerHTML.length = 4
tempElem.innerHTML.charCodeAt(0) = 1
tempElem.innerHTML.charCodeAt(1) = 1
tempElem.innerHTML.charCodeAt(2) = 1
tempElem.innerHTML.charCodeAt(3) = 1
tempElem.innerHTML.charCodeAt(4) = NaN

我对这个很迷茫。实际数据在 json 中,对于这些特定值,我看到了 key:"" .这与正在过滤的完全相同。

我知道我可以在创建任何类型的 dom 元素之前检查 javascript 中的值,但我想知道是什么导致了这种情况以及如何直接修复它。

最佳答案

原来是因为我使用了.trim()方法。
STRING.trim() 不会删除 x00(Header 的开始)、x01(文本的开始)等字符。
但是,如果出现在其他空字符串中,这些字符仍将通过 ==="" 检查。

为了我的特定目的,这个简单的正则表达式解决了这个问题:
str.match(/[^\x00-\x20\x7F]/)
(如果至少存在 1 个非空格或“空”字符,将返回 true)

关于javascript - 空 <p> 元素实际上不是空的? Ascii 控制字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com