如何给ID为rowX且X大于5的<tr>元素添加指定类?
解决ID含字符串时判断数值大小并添加类的问题
你的代码核心问题是错误地比较了字符串长度,而非提取出的数字大小:mRow.id.replace('row', '').length > 5 这行代码是在看替换后字符串的字符个数,比如row6替换后是"6",长度为1,远小于5,自然不会触发添加类的逻辑。
修正方案
需要把ID中提取出的字符串转为数值类型,再和5做比较:
// 获取所有ID以row开头的tr元素 var mRows = document.querySelectorAll("#datatable #datarows tr[id^='row']"); // 遍历每个目标元素 mRows.forEach(function (mRow) { // 提取ID中的数字并转为整数 var rowNum = parseInt(mRow.id.replace('row', ''), 10); // 判断数字是否大于5 if (rowNum > 5) { mRow.classList.add('some-class'); } });
更可靠的数字提取方式
如果ID格式可能发生变化(比如出现row_10、row-12这类格式),可以用正则表达式提取数字,兼容性更强:
mRows.forEach(function (mRow) { // 用正则匹配ID中的所有数字部分 var numMatch = mRow.id.match(/\d+/); if (numMatch) { var rowNum = parseInt(numMatch[0], 10); if (rowNum > 5) { mRow.classList.add('some-class'); } } });
这样就能正确为row6及以上的元素添加目标类了。
内容的提问来源于stack exchange,提问作者klewis
相关产品推荐
相关产品推荐

