如何比较innerHTML(JavaScript中的字符串比较)

时间:2017-08-26 15:30:28

标签: javascript html string if-statement comparison

我正在按字母顺序过滤表格并遇到问题。我不理解此代码中的x.innerHTML > y.innerHTML概念:

 table = document.getElementById('myTable');
 rows = table.getElementsByTagName('tr');
 x = rows[1].getElementsByTagName('td')[0];
 y = rows[2].getElementsByTagName('td')[0];
 //check if the two rows should switch place:
 console.log(x.innerHTML.length, y.innerHTML.length);
 console.log(x.innerHTML > y.innerHTML);

它是如何运作的?

2 个答案:

答案 0 :(得分:5)

innerHTML返回一个字符串,因此您只需比较两个字符串:

"albert" < "boby" // true

来自ECMAScript Language Specification

  

字符串的比较在代码单元值序列上使用简单的字典顺序。没有尝试使用Unicode规范中定义的字符或字符串相等和整理顺序的更复杂,语义导向的定义。因此,根据Unicode标准规范相等的字符串值可以测试为不相等。实际上,该算法假设两个字符串已经处于规范化形式。另请注意,对于包含增补字符的字符串,UTF-16代码单元值序列的字典顺序与代码点值序列的字典顺序不同。

答案 1 :(得分:1)

x.innerHTMLy.innerHTML字符串,因此如果您希望将其值作为数字,则需要使用Number()将其包围,如下所示:

Number(x.innerHTML)>Number(y.innerHTML)

否则,您将两个字符串与不等式进行比较,计算机采用不同的方式,如上面的另一个答案所示。