刚开始使用 self.widthConstraint.priority = 250
self.layoutIfNeeded()
和indexOf()
函数,我知道它们的使用原因,但结果并不让我感到高兴:)
lastIndexOf()
let str = $('#info').html();
// WORKS
//alert(str.lastIndexOf('√'));
// DOESN'T WORK
alert(str.lastIndexOf('√'));
问题是我将警报结果设为“-1”,这意味着在<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="info">√</div>
变量中找不到√
。使用简单的符号str
,但是,我不确定在这里使用此符号是否是一个好习惯。
在我看来,关于此问题的另一种方法是将HTML中的√
符号编码为√
,因此使用“Inspect element”功能可以看到√
。
您怎么看?
答案 0 :(得分:3)
没有直接的方法来实现这一目标。但是如果你仍然想这样做,那么你只需要创建一个ASCII值的HEX值:
let str = ascii_to_hexa($('#info').html());
str = '�'+str.toUpperCase()+';';
alert(str.lastIndexOf('√'));
function ascii_to_hexa(str)
{
var arr1 = [];
for (var n = 0, l = str.length; n < l; n ++){
var hex = Number(str.charCodeAt(n)).toString(16);
arr1.push(hex);
}
return arr1.join('');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="info">√</div>
&#13;
答案 1 :(得分:1)
当浏览器读取并解析您的HTML时,它会构建一个DOM, 保留您提供的确切HTML。稍后,如果您要求HTML,它会使用自己的规则构建一个新的HTML字符串。
这就是为什么str.lastIndexOf('√')
不起作用的原因:浏览器没有义务按照您提供时使用的相同形式退回角色。它可以将其作为一个字符(√
)或一个命名字符引用(√
in this case)或十进制数字字符引用(√
)而不是您正在寻找的十六进制数字字符引用。
您必须在目标浏览器上进行测试才能看到他们为您提供的内容,然后进行查找。我怀疑大多数(如果不是全部)都会返回实际角色,因此str.lastIndexOf('√')
(或str.lastIndexOf('\u221A')
)将是您的最佳选择。
<div>√</div>
&#13;