0
function maxStyle() {
    var one = parseInt($("#num-one"));
    var two = parseInt($("#num-two"));
    var three = parseInt($("#num-three"));
}
  1. 最大の数を見つけ、その変数に +1 します。
  2. 最大値に等しい変数が複数ある場合は、変数の 1 つをランダムに選択し、それに +1 します。

Math.max() を使用できることはわかっていますが、それは数値を返すだけなので、変数を取得するにはどうすればよいですか?

初心者で申し訳ありませんが、私は JS/JQ で 4 日間しか過ごしていません。

4

5 に答える 5

1

コード:

function maxStyle() {
    var one = parseInt($("#num-one").val()),
        two = parseInt($("#num-two").val()),
        three = parseInt($("#num-three").val()),
        four = parseInt($("#num-three").val()),
        five = parseInt($("#num-three").val());
        // ..etc.

    var arr = [one, two, three, four, five /*, etc. */],
        tempArr = [];

    arr.sort(function(a, b) {
        return (b - a)
    }); // now array is sorted with highest element on top

    arr[0] = arr[0] + 1; // increment the highest element by 1, per question

    var a = 0, b;
    for (b = 0; b < arr.length; b++ ) {
        if(arr[a] == arr[b]) {
            tempArr.push(arr[b]);
            a++; 
            // not incrementing outside the loop, 
            // since we don't want to compare other duplicates, 
            // but only the largest which is the first element
        }
    }

    // We now have an array of multiple items equal to the max

最大値に等しい変数が複数ある場合
は、変数の 1 つをランダムに選択し、それに +1 します。

    // Continue Code..
    // Generate a random between 1 and no. of items
    randomItem = Math.floor(Math.random() * arr.length) + 1;
    tempArr[randomItem] = tempArr[randomItem] + 1;

    return arr[0] > tempArr[randomItem] ? arr[0] : tempArr[randomItem];
}
于 2012-12-31T19:45:56.717 に答える
1

これを行うことができます:http://jsfiddle.net/zZpVq/1/

var max = -Infinity; // variable to store max value;

var maxEle = $(".num").each(function() {
    if (+this.value > max) max = +this.value;  // find the max value
}).filter(function() {
    return this.value == max;  // filter elements to ones that share max value
});

if (maxEle.length > 1)   // get a random element with the max value
    maxEle = maxEle.eq(Math.floor(Math.random() * maxEle.length));

maxEle.css("border-color", "red");​ // do something with that element.

編集 — イ​​ニシャルmaxを に変更し、単項プラス-Infinityの数値変換を強制したthis.valueため、これは負の値でも機能します。

于 2012-12-31T19:06:31.213 に答える
0

私はこれがあなたがやろうとしていることだと信じています...

function maxStyle() {
  var one = parseInt($("#num-one").val());
  var two = parseInt($("#num-two").val());
  var three = parseInt($("#num-three").val());
  var maxed = Math.max(one, Math.max(two, three)) + 1; // Max of all three plus 1
}

変数maxedは、3 つの入力の最大値の値を持ちます...それらが入力であると仮定します。

ランダム化がどこに入るのかわかりません(質問のタイトルから)。

于 2012-12-31T18:54:15.793 に答える
0

創刊

parseInt($("#num-one")); 

jQuery オブジェクトからどのように数値を取得していますか?

.val() または .text() を使用する必要があります

parseInt($("#num-one").val(),10); 

また、parseInt を使用する場合は基数を使用します。

他の問題については、if ステートメントを使用する必要があります。

于 2012-12-31T18:55:19.313 に答える
0

すべての ID の配列を設定し、保存されている最大値と比較するだけです。

var idArr = ['#num-one', '#num-two', '#num-three'];

function maxNum(idArr) {
  var max = 0;
  $.each( idArr, function( key, value ) {
    var curr = parseInt($(value).val(),10);
    if (curr > max) max = curr;
  });
  return max+1;
}

alert('Max :' + maxNum(idArr));
于 2012-12-31T19:05:41.370 に答える