我正在按字母顺序过滤表格并遇到问题。我不理解此代码中的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);
它是如何运作的?
答案 0 :(得分:5)
innerHTML
返回一个字符串,因此您只需比较两个字符串:
"albert" < "boby" // true
来自ECMAScript Language Specification
字符串的比较在代码单元值序列上使用简单的字典顺序。没有尝试使用Unicode规范中定义的字符或字符串相等和整理顺序的更复杂,语义导向的定义。因此,根据Unicode标准规范相等的字符串值可以测试为不相等。实际上,该算法假设两个字符串已经处于规范化形式。另请注意,对于包含增补字符的字符串,UTF-16代码单元值序列的字典顺序与代码点值序列的字典顺序不同。
答案 1 :(得分:1)
x.innerHTML
和y.innerHTML
是字符串,因此如果您希望将其值作为数字,则需要使用Number()
将其包围,如下所示:
Number(x.innerHTML)>Number(y.innerHTML)
否则,您将两个字符串与不等式进行比较,计算机采用不同的方式,如上面的另一个答案所示。