0
function maxStyle() {
    var one = parseInt($("#num-one"));
    var two = parseInt($("#num-two"));
    var three = parseInt($("#num-three"));
}
  1. 找到最大的数并对其变量 +1。
  2. 如果有多个变量等于最大值,则随机选择其中一个变量,并对其 +1。

我知道我可以使用 Math.max() - 但这只是返回一个数字所以我如何获取变量?

抱歉,我只在 JS/JQ 上呆了 4 天。

4

5 回答 5

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 回答
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。

    // 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 回答
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将具有三个输入中最大值的值......假设它们是输入。

我不确定随机化的来源(来自您的问题标题)。

于 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 回答