Javascript 如何将lastIndexOf()函数与符号一起使用

Javascript 如何将lastIndexOf()函数与符号一起使用,javascript,html,character-encoding,Javascript,Html,Character Encoding,刚开始使用indexOf()和lastIndexOf()函数,我知道为什么要使用它们,但是结果并没有让我感到高兴:) let str=$('#info').html(); //工作 //警报(str.lastIndexOf('√')); //不起作用 警报(str.lastIndexOf('√;'); √;当浏览器读取和解析您的HTML时,它会构建一个DOM,而不会保留您提供的确切HTML。稍后,如果您请求HTML,它会使用自己的规则构建一个新的HTML字符串 这

刚开始使用
indexOf()
lastIndexOf()
函数,我知道为什么要使用它们,但是结果并没有让我感到高兴:)

let str=$('#info').html();
//工作
//警报(str.lastIndexOf('√'));
//不起作用
警报(str.lastIndexOf('√;');


√;
当浏览器读取和解析您的HTML时,它会构建一个DOM,而不会保留您提供的确切HTML。稍后,如果您请求HTML,它会使用自己的规则构建一个新的HTML字符串

这就是为什么
str.lastIndexOf('√;')
不起作用的原因:浏览器没有义务以您提供字符时使用的相同形式返回该字符。它可以将其作为一个字符返回(
)或命名字符引用(
√
)或十进制数字字符引用(
&8730;
),而不是您正在查找的十六进制数字字符引用

你必须在你的目标浏览器上进行测试,看看它们给了你什么,然后再去寻找。我怀疑大部分(如果不是全部的话)都会返回实际字符,因此你的
str.lastIndexOf('√')(或
str.lastIndexOf('\u221A')
)将是一条出路


√
没有直接的方法来实现这一点。但是如果您仍然想这样做,那么您只需要创建ASCII值的十六进制值:

let str=ascii_to_hexa($('#info').html());
str='�'+str.toUpperCase()+';
警报(str.lastIndexOf('√;');
函数ascii_到_hexa(str)
{
var arr1=[];
对于(var n=0,l=str.length;n


√;
谢谢您的回答。您认为使用像
是一种很好的做法,没关系,或者我应该使用
\u221A
?@LukasNaujokaitis:没关系,做你/你的团队喜欢的。你的堆栈需要正确设置,以确保在所有阶段都使用相同的编码。如果你担心编码不匹配,你只需要使用
\u221A
(你可能喜欢它作为一种风格,但这是你需要它的唯一原因。)但如果你喜欢,这是一个需要解决的问题。:-)谢谢你的解释,我认为使用编码字符串更好,因为可能在某些浏览器中
\u221A
映射工作,但在
。当然,我说的是非常古老的浏览器。我的全部JavaScript代码在那里都不起作用:所以,是的,没关系。哇,这么长的函数只转换?:)很好的解决方案,但是,它对我来说太长了。只是添加了这个答案,以便它可能对您以及寻求相同解决方案的人有用。