1

JavaScript 中是否有任何函数可以让我从 HTML 实体(名称)转换为数字、十六进制,甚至 ISO 斜杠字符(用于 CSS)?

例如,

  • 美分符号 ( ¢ ) 的 HTML 是 : ¢
  • 它的数值¢也可以在 HTML 标记中使用
  • 十六进制值为%A2
  • ISO 是\00a2- 我可以直接在 CSScontent属性中使用。

如下所示:

.cents:after {
    font-style: italic;
    content: "\00a2";
}

因此,我对 ISO 值更感兴趣。

4

2 回答 2

2

HTML 实体是在 HTML 中定义的,而不是在 JavaScript 中。要在 JavaScript 中使用实体名称,您需要让 JavaScript 解释器将数据解析为 HTML。实现此目的的一种简单方法是将数据分配给innerHTML元素的属性。因此,从实体名称开始,构造一个 HTML 实体引用,方法是为其添加前缀&和后缀;,分配它,然后处理(解析的)值,一个字符。您可以使用将字符转换为其 Unicode 数字charCodeAt(),然后使用toString()16 作为参数以十六进制写入数字:

var ent = 'cent'; // just an example; "ent" contains the entity name
var elem = document.createElement('span');
elem.innerHTML = '&' + ent + ';';
var ref = '\\' + elem.innerHTML.charCodeAt(0).toString(16);
// now ref contains a string like \a2 (you may need to add zeros or append a
// space if you write this into CSS

不过,我不明白这里有什么意义。您可以在 HTML、JavaScript 和 CSS 中只使用字符本身,前提是您正确处理字符编码问题,无论如何您都应该这样做。

于 2013-07-22T12:39:55.343 回答
1

美分符号 (¢) 的 HTML 是 : ¢

//will need to work against a list of all items or the char code set you will need

它的数值¢也可以在 HTML 标记中使用

'&#' + '¢'.charCodeAt(0);

十六进制值为%A2

escape('¢');

ISO 是\00a2- 我可以直接在 CSS 内容属性中使用它。

var iso = ['\\', '0', '0', '0', '0'];
var hex = '¢'.charCodeAt(0).toString(16).split('');

for(var i=4; i >= 0 && hex.length > 0 ; i--){
    iso[i] = hex.pop();
}

iso.join('')
于 2013-07-22T08:37:05.453 回答