Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取javascript节点原始内容_Javascript_String_Object - Fatal编程技术网

获取javascript节点原始内容

获取javascript节点原始内容,javascript,string,object,Javascript,String,Object,我在一个变量中有一个javascript节点,如果我将该变量记录到控制台,我会得到以下结果: "​asekuhfas eo" ​asekuhfas eo 只是javascript节点中的一些随机字符串。我想让它成为一根弦。但问题是,当我在上面使用文本内容时,我得到了以下信息: "​asekuhfas eo" ​asekuhfas eo 将转换特殊字符。我需要让字符串看起来像这样: ​asekuhfas eo var a = d

我在一个变量中有一个javascript节点,如果我将该变量记录到控制台,我会得到以下结果:

"​asekuhfas eo"
​asekuhfas eo
只是javascript节点中的一些随机字符串。我想让它成为一根弦。但问题是,当我在上面使用文本内容时,我得到了以下信息:

"​asekuhfas eo"
​asekuhfas eo
将转换特殊字符。我需要让字符串看起来像这样:

​asekuhfas eo
var a = div.textContent;
var result = "";
var treshold = 1000;
for (var i = 0; i < a.length; i++) {
  if (a.charCodeAt(i) > 1000)
    result += "&#" + a.charCodeAt(i) + ";";
 else 
    result += a[i];
}
这样,我可以处理字符串中存在的特殊字符识别

如何使该节点对象按字面意思成为字符串?

textContent正确返回所有内容,如&8203;是的,即:

通常缩写为ZWSP

此字符用于不可见字分隔和换行控制;它没有宽度,但它在两个字符之间的存在并不能阻止对齐中增加字母间距

可以通过以下方式轻松证明:

var div = document.createElement('div');
div.innerHTML = '&#8203;xXx';

console.log( div.textContent );                   // "​xXx"
console.log( div.textContent.length );            // 4
console.log( div.textContent[0].charCodeAt(0) );  // 8203
如中所述,将UTF字符转换回HTML实体有点棘手,他的解决方案对于字符代码高于1000的非标准字符完全有效。作为替代方案,我可以提出一个较短的RegExp解决方案,该解决方案将给出相同的结果:

var result = div.textContent.replace(/./g, function(x) {
    var code = x.charCodeAt(0);
    return code > 1e3 ? '&#' + code + ';' : x;
});

console.log( result );  // "&#8203;xXx"
为了获得更好的解决方案,您可以看看哪个可以处理所有HTML特殊字符。

textContent正确返回所有内容,如&8203;是的,即:

通常缩写为ZWSP

此字符用于不可见字分隔和换行控制;它没有宽度,但它在两个字符之间的存在并不能阻止对齐中增加字母间距

可以通过以下方式轻松证明:

var div = document.createElement('div');
div.innerHTML = '&#8203;xXx';

console.log( div.textContent );                   // "​xXx"
console.log( div.textContent.length );            // 4
console.log( div.textContent[0].charCodeAt(0) );  // 8203
如中所述,将UTF字符转换回HTML实体有点棘手,他的解决方案对于字符代码高于1000的非标准字符完全有效。作为替代方案,我可以提出一个较短的RegExp解决方案,该解决方案将给出相同的结果:

var result = div.textContent.replace(/./g, function(x) {
    var code = x.charCodeAt(0);
    return code > 1e3 ? '&#' + code + ';' : x;
});

console.log( result );  // "&#8203;xXx"

为了获得更好的解决方案,您可以看看哪个可以处理所有HTML特殊字符。

正如VisionN所指出的,不可能反转UTF-8编码。 然而,通过使用charCodeAt,您可能仍然可以实现您的目标

假设你有你的文本内容。通过遍历每个字符,检索其字符码,并在前面加上前缀&以及追加;你可以得到你想要的结果。这种方法的缺点显然是,您将在这个注释中拥有每一个字符,甚至那些不需要它的字符。通过引入某种阈值,您可以将此限制为仅限外来角色

一个非常幼稚的方法是这样的:

&#8203;asekuhfas eo
var a = div.textContent;
var result = "";
var treshold = 1000;
for (var i = 0; i < a.length; i++) {
  if (a.charCodeAt(i) > 1000)
    result += "&#" + a.charCodeAt(i) + ";";
 else 
    result += a[i];
}

正如VisionN所指出的,不可能反转UTF-8编码。 然而,通过使用charCodeAt,您可能仍然可以实现您的目标

假设你有你的文本内容。通过遍历每个字符,检索其字符码,并在前面加上前缀&以及追加;你可以得到你想要的结果。这种方法的缺点显然是,您将在这个注释中拥有每一个字符,甚至那些不需要它的字符。通过引入某种阈值,您可以将此限制为仅限外来角色

一个非常幼稚的方法是这样的:

&#8203;asekuhfas eo
var a = div.textContent;
var result = "";
var treshold = 1000;
for (var i = 0; i < a.length; i++) {
  if (a.charCodeAt(i) > 1000)
    result += "&#" + a.charCodeAt(i) + ";";
 else 
    result += a[i];
}


不确定这是否回答了OP的问题:如何让节点对象看起来像字符串一样?OP希望获取html中显示的字符串。即8203英镑;好的,我明白了。所以我想知道我是否能以其他方式获得DOM节点的外观?某种我可能不知道的数字或原始unicode编码方法?不确定这是否回答了OP的问题:如何让节点对象按字面上的意思成为字符串?OP希望获取html中显示的字符串。即8203英镑;好的,我明白了。所以我想知道我是否能以其他方式获得DOM节点的外观?某种我可能不知道的数字或原始unicode编码方法?离题:它被称为DOM节点。你读过标记raw的描述吗?@hon2a我是说DOM节点,在javascript中,澄清起来似乎是多余的。@Giacomo d'Antonio Oh geese,不,我没有:|更确切地说,你可能想检查并编码innerHtml,如果你想显示特殊字符。Offtopic:它被称为DOM节点。你读过标记raw的描述吗?@hon2a好吧,我的意思是DOM节点,在javascript中,澄清起来似乎是多余的。@Giacomo d'Antonio Oh geese,不,我没有:|更确切地说,你可能想检查并编码innerHtml,如果你想展示这些特殊的角色,太棒了!工作起来很有魅力:良好的思维。考虑到我只对一个特定的字符代码感兴趣,这尤其有用。因此,我可以将a.charCodeAti>1000替换为a.charCodeAti==8203Marvelous!工作很有魅力:好的思维。考虑到我只对那一个sp感兴趣,这尤其有用 特定字符代码。因此,我可以将a.charCodeAti>1000替换为a.charCodeAti==8203