0
我想从表中输入值列表中找到输入值的位置,然后显示位置。这是在将值从最高值排序到最低值之后。从表中排序数字列表中查找数字的位置
在下面的例子中,我期望值为10的输入是位置2.同样,如果我用值为45的输入测试它,位置将是1,依此类推。
我曾尝试下面的代码,但我得到一个位置-1
<script type="text/javascript">
// Get the values as numbers
var marks = document.getElementsByClassName('sm');
var valArr = Array.prototype.map.call(marks, function(el) {
return parseInt(el.value)
});
// Sort value array in descending order
var marks = valArr.sort(function(a, b) {
return b - a
});
</script>
<table id="tableID" width="200" border="1">
<tr>
<td width="122" class="">
<input name="name" class="sm" id="sm" type="text" value="4" />
</td>
<td width="62" class="pos"></td>
</tr>
<tr>
<td class="">
<input name="name" class="sm" id="sm1" type="text" value="6" />
</td>
<td class="pos1"></td>
</tr>
<tr>
<td class="">
<input name="name" class="sm" id="sm2" type="text" value="10" />
</td>
<td class="pos2">
<script type="text/javascript">
var marksID = document.getElementById('sm2').value;
var mark = parseInt(marksID);
var valPos = marks.indexOf(mark);
document.getElementsByClassName('pos2')[0].textContent = valPos;
</script>
</td>
</tr>
<tr>
<td class="">
<input name="name" class="sm" id="sm3" type="text" value="45" />
</td>
<td class="pos3"></td>
</tr>
<tr>
<td class="">
<input name="name" class="sm" id="sm4" type="text" value="1" />
</td>
<td class="pos4"></td>
</tr>
</table>
你的第一个脚本将找不到'document.getElementsByClassName( 'SM')'的任何元素,因为脚本在表格解析之前运行。您需要在他们尝试访问的任何元素之后放置'
我想通了。采用DOMContentLoaded作为一个评论建议的Steven P。这是我做的演示。在从最高排序到最低排序之后说出数字在列表中的位置的好方法。
如果有任何其他好的建议或改进,我会高度赞赏
来源
2016-07-30 08:21:21