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