Javascript 空<;p>;元素实际上不是空的吗?Ascii控制字符?

Javascript 空<;p>;元素实际上不是空的吗?Ascii控制字符?,javascript,html,ascii,Javascript,Html,Ascii,使用JavaScript,我将遍历一个对象数组。如果对象有一个或多个非null或空的值,将创建一个元素,然后将其附加到容器元素 var tempElem = document.createElement("P"); if( item.valueOne !== '' ) tempElem.innerHTML += item.valueOne; if( item.valueTwo !== '' ) tempElem.innerHTML += item.valueTwo; if(

使用JavaScript,我将遍历一个对象数组。如果对象有一个或多个非null或空的值,将创建一个
元素,然后将其附加到容器元素

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上,它精确地显示


我做了一些分析,在最后一个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格式的,对于这些特定值,我看到
键:“
”。这与正在被过滤的完全相同


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

结果表明,这是由于我使用了
.trim()
方法。
STRING.trim()
不会删除诸如
x00
(标题开头)、
x01
(文本开头)等字符。
但是,如果在其他空字符串中出现,这些字符仍将通过检查

出于我的特定目的,这个简单的正则表达式解决了这个问题:
str.match(/[^\x00-\x20\x7F]/)


(如果至少存在1个非空格或“空”字符,则返回true)

根据:1是标题字符的开头。你试过利用吗?是的。我所有的数据在实际保存之前都会被调用。我刚刚测试过,而且
trim()
没有去掉ascii 1。避免
innerHTML
(它是非标准的,价格昂贵,并且有副作用)。请考虑使用<代码>文本内容< /代码>。这也可能解决你的问题。贵吗?我知道另外两张底片,但以前从没听说过它很贵。