javascript - JavaScript for 循环中的错误

标签 javascript for-loop html-table

我对网页设计和 Javascript 都很陌生。在设置我的第一个 Web 应用程序时,我遇到了一个我不明白的错误。它一定是我认为 Javascript 在网页中工作的方式,或者是我对循环一般不了解的东西。

我正在尝试使用 js 突出显示表格的最佳值(value)。只要该文件在我的电脑上本地运行,我就会生成随机值并一直按刷新按钮,直到出现错误。出于调试目的,我现在也使用 console.log 函数,但我仍然不明白这是如何发生的......

非常感谢任何关于这个实际上非常简单的代码中可能出现问题的提示。

// Best value of the week
var table = document.getElementsByTagName('table')[0];
var bestValue = 0;
var bestRow = 0;

for (var i = 1; i < 22; i++) {

   if (table.rows[i].childNodes[5].innerHTML > bestValue){
       bestValue = table.rows[i].childNodes[5].innerHTML;

       console.log(i);
       console.log(table.rows[i].childNodes[5].innerHTML);
       console.log(bestValue);
       bestRow = i;
   }
   else{
       console.log(i);
       console.log(table.rows[i].childNodes[5].innerHTML);
       console.log(bestValue);
   }
}

table.rows[bestRow].childNodes[5].classList.add('bestofweek');

print screen

最佳答案

正如@AndrewShmig所说,您正在将字符串与int进行比较,并且应该首先使用parseInt将innerHtml转换为int。 为了解释为什么不将其解析为 int 在您的情况下不起作用,

在第一次迭代中:

When comparing a string with a number, JavaScript will convert the string to a number when doing the comparison.

因此,“6555”> 0 将是 true,因为 6555 > 0,但现在您使用字符串“6555”分配 bestValue,并且它不再是 int。

现在后续比较是在两个字符串之间进行的,按字母顺序进行:

"451" > "6555" // false, because 6 comes after 4 alphabetically
"8995" > "6555" // true
"9359" > "8995" // true
// ...
"974" > "9359" // true, because 7 comes after 3 alphabetically
//...

现在你的最大值是错误的。

引用号。 Javascript comparisons

关于javascript - JavaScript for 循环中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61862895/

相关文章:

java - For 循环接受额外的数组成员

javascript - 变量在 for 循环中没有改变 - JavaScript

css - 一旦列标题固定(粘性标题),表格的第一行就会消失

php - 一切都出了问题 : Php - MySQL

javascript - 是否有必要使用正则表达式在 String.replace() 调用中转义替换字符串?

javascript - 我的页面总是将我重定向到我的服务器

arrays - 将 for 循环的输出存储到数组或变量中

javascript - 使用 jq 将元素数组分解为多个不同长度的数组

javascript - 如何将抓取的收入数据发送到我的工具?

html - 如何在 100% 宽度的表格中保持 TD 宽度?