如何比较包含十六进制字符引用的innerHTML?

时间:2012-03-09 20:33:33

标签: javascript hex

我有一个包含&#x25bc的标签; (在呈现的页面上显示为▼):

<span id=up_down>&#x25bc;</span>

问题在于,当我尝试将innerHTML与&amp;#x25bc;

进行比较时

而是试图比较▼==&amp;#x25bc; (并且失败了)

var e = document.getElementById("up_down");
if ( e.innerHTML == '&#x25b2;' )
{
  e.innerHTML = '&#x25bc;';
}
else if ( e.innerHTML == '&#x25bc;' )
{
  e.innerHTML = '&#x25b2;';
}

3 个答案:

答案 0 :(得分:4)

尝试escape()并改为使用%u25BC%u25B2

var e = document.getElementById("up_down");
if ( escape(e.innerHTML) == '%u25B2' )
{
  e.innerHTML = '&#x25bc;';
}
else if ( escape(e.innerHTML) == '%u25BC' )
{
  e.innerHTML = '&#x25b2;';
}​

demo

答案 1 :(得分:1)

尝试比较字符代码:

if(e.textContent.charCodeA(0) == 0x25bc) {
  // Your code
}

现在您将实际字符与包含其HTML实体表示的字符串进行比较。

答案 2 :(得分:0)

尝试这样的事情:

var upArrow = String.fromCharCode('0x25b2');
var downArrow = String.fromCharCode('0x25bc');

if ( e.innerHTML == upArrow )
{
  e.innerHTML = downArrow;
}
else if ( e.innerHTML == downArrow )
{
  e.innerHTML = upArrow;
}