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

How to compare innerHTML containing a hexadeximal character reference?

本文关键字:字符 十六进制 引用 innerHTML 包含 何比较 比较      更新时间:2023-09-26

我有一个包含&x25bc;(显示为▼在渲染页面上):

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

问题是,当我尝试将innerHTML与&x25bc;

相反,它试图进行比较▼ == &x25bc;(和失败的)

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

尝试将其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;';
}​

演示

尝试比较字符代码:

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

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

试试这样的东西:

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;
}