0
Ich versuche, die Position eines Eingabewerts aus einer Liste von Eingabewerten in einer Tabelle zu finden und dann die Position anzuzeigen. Dies ist nach dem Sortieren der Werte vom höchsten zum niedrigsten Wert.Finden Sie die Position einer Zahl aus einer Liste von sortierten Zahlen in einer Tabelle
Im folgenden Beispiel erwarte ich, dass die Eingabe mit dem Wert 10 die Position 2 ist. Wenn ich es mit der Eingabe mit dem Wert 45 testen würde, wäre die Position gleich 1 und so weiter.
Ich habe den Code unten versucht, aber ich bekomme eine Position -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>
Ihr erstes Skript alle Elemente mit 'document.getElementsByClassName ('sm') finden nicht sehr zu schätzen wissen', weil das Skript vor der Analyse der Tabelle ausgeführt wird. Sie müssen die '
I .using DOMContentLoaded von Steven P auf einer der Kommentare wie vorgeschlagen herausgefunden. Hier ist die Demo von dem, was ich gemacht habe. Eine gute Möglichkeit, die Position von Zahlen in einer Liste nach dem Sortieren von der höchsten zur niedrigsten zu sagen.
Wenn es irgendwelche andere gute Vorschläge oder Verbesserungen i wird
Quelle
2016-07-30 08:21:21