如何在JavaScript中获取html实体的数字,十六进制和ISO

时间:2013-07-22 07:58:40

标签: javascript html css ascii

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

,例如,

  • 分号符号(¢)HTML为:¢
  • 其数值为¢,可在HTML标记中使用 井
  • 十六进制值为%A2
  • ISO是\00a2 - 我可以直接在CSS content属性中使用。

如下所示:

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

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

2 个答案:

答案 0 :(得分: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('')

答案 1 :(得分:1)

HTML实体是用HTML定义的,而不是JavaScript。要在JavaScript中使用实体名称,您需要使JavaScript解释器将数据解析为HTML。实现此目的的一种简单方法是将数据分配给元素的innerHTML属性。因此,从实体名称开始,通过在其前面添加&并在其后面添加;来构造HTML实体引用,分配它,然后处理(已解析的)值,即字符。您可以使用charCodeAt()将字符转换为其Unicode编号,然后使用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中的字符本身,只要您正确处理字符编码问题,无论如何都应如此。