10

私は次のdivを持っています:

<div id="2" class="maindiv">test</div>
<div id="5" class="maindiv">test</div>
<div id="3" class="maindiv">test</div>
<div id="1" class="maindiv">test</div> 
<div class="maindiv">test</div>     
<div id="4" class="maindiv">test</div>    

jQueryまたはJavascriptで最高のID(5)と最低のID(1)を取得するには?

4

7 に答える 7

23

idこれを実現するには、すべての値を含む配列を作成し、それを使用Mathして最高/最低を取得します。

var ids = $('.maindiv[id]').map((i, el) => parseInt(el.id, 10)).get();
var lowest = Math.min.apply(Math, ids); // = 1
var highest = Math.max.apply(Math, ids); // = 5

console.log(`${lowest} => ${highest}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="2" class="maindiv">test</div>
<div id="5" class="maindiv">test</div>
<div id="3" class="maindiv">test</div>
<div id="1" class="maindiv">test</div>
<div class="maindiv">test</div>
<div id="4" class="maindiv">test</div>

[id]属性セレクターが必要であることに注意してください。それ以外の場合0は、欠損値と見なされます。

IE のサポートが必要な場合は、アロー関数の代わりに無名関数を使用する必要があります。

var ids = $(".maindiv[id]").map(function() {
  return parseInt(this.id, 10);
}).get();
于 2013-02-08T15:34:33.057 に答える
2
var min = Number.MAX_VALUE, max = Number.MIN_VALUE;
$(".maindiv").each(function () {
    var id = parseInt(this.id, 10);
    if (id > max) {
        max = id;
    }
    if (id < min) {
        min = id;
    }
});
于 2013-02-08T15:34:12.230 に答える
2
function minMaxId(selector) {
  var min=null, max=null;
  $(selector).each(function() {
    var id = parseInt(this.id, 10);
    if ((min===null) || (id < min)) { min = id; }
    if ((max===null) || (id > max)) { max = id; }
  });
  return {min:min, max:max};
}

minMaxId('div'); // => {min:1, max:5}

http://jsfiddle.net/qQvVQ/

于 2013-02-08T15:37:58.337 に答える
1

Math.maxグローバル変数を作成し、ループ内を使用して各要素と比較します。

var maxval = Number.MIN_VALUE,
    minval = Number.MAX_VALUE;

$('div').each(function () {
    var num = parseInt(this.id, 10) || 0; // always use a radix
    maxval = Math.max(num, maxval);
    minval = Math.min(num, minval);
});

console.log('max=' + maxval);
console.log('min=' + minval);

http://jsfiddle.net/mblase75/gCADe/

于 2013-02-08T15:33:16.703 に答える
1
var valArray = [];
$('.maindiv').each(function(){
    valArray.push(parseInt($(this).attr('id'), 10));
})
valArray.sort(function(a, b) { return a - b })

valArrayp[0] // lowest
valArrayp[valArrayp.length - 1] // highest`

テストしていませんが、動作するはずです

于 2013-02-08T15:41:18.793 に答える
1

sort 関数を使用してそれを行うことができます。

function arrayify(obj){
    return [].slice.call(null,obj);
}
var all = arrayify(document.querySelectorAll('div[id]'));
var max = all.sort().pop();
var min = all.sort().reverse().pop();

これは、jQuery を使用するよりもはるかに簡単です。

于 2013-02-08T15:48:10.970 に答える
1

これには id の代わりに data を使用する必要があります。

<div data-value="2" class="maindiv">test</div>
<div data-value="5" class="maindiv">test</div>
<div data-value="3" class="maindiv">test</div>
etc.

編集:上記のRory McCrossanの受け入れられた回答を支持して、回答を短くしました。

于 2013-02-08T15:34:54.493 に答える