如何在javascript中将字段值与相同的数据属性进行比较

时间:2011-09-13 14:25:13

标签: javascript jquery

如何将文本字段中的值与javascript中的相同数据属性进行比较?

<input type="text" name="a" id="a" data-common="candy" class="loop" value="2">
<input type="text" name="b" id="b" data-common="candy" class="loop" value="3">
<input type="text" name="c" id="c" data-common="ice" class="loop" value="7">
<input type="text" name="d" id="d" data-common="ice" class="loop" value="2">
<input type="text" name="e" id="e" data-common="water" class="loop" value="5">
<input type="text" name="f" id="f" data-common="water" class="loop" value="9">

我想要做的是确定具有公共数据属性的每个字段的更高值。如果common属性是candy,那么程序将比较值2和3。 我的问题是我想不起一个好的算法甚至开始编码。你能给我一个主意吗?我需要先做什么。

3 个答案:

答案 0 :(得分:2)

你走了。以下代码将找到具有最大值的所有唯一data-common属性。

正在使用 demo

var dataAttributes = {}, attrValue, inputValue, $this;
$('input[data-common]').each(function() {
    $this = $(this);
    attrValue = $this.attr("data-common");
    inputValue = parseInt($this.val());
    if(!dataAttributes[attrValue]){
        dataAttributes[attrValue] = inputValue;
    }
    else{
        if(dataAttributes[attrValue] < inputValue){
            dataAttributes[attrValue] = inputValue;
        }   
    }
});
console.log(dataAttributes);

答案 1 :(得分:1)

var datum = "candy";
var maxd = Number.NEGATIVE_INFINITY;;
$('input[data-common="'+datum+'"]').each(function() {
  maxd = Math.max(maxd,$(this).val());
});

http://jsfiddle.net/KaUEX/

答案 2 :(得分:1)

他们已经回答了,但是我做了工作所以我要发布它

var common_values = {},
    result = $('#result');

$('[data-common]').each(function(){
    var element = $(this),
        common_key = element.attr('data-common'),
        value = parseInt(element.val(), 10);
    if(typeof(common_values[common_key]) === 'undefined'){
        common_values[common_key] = [];
    }
    common_values[common_key].push(value);
});

for(var data in common_values){//or you could find the min, or average or whatever
    result.append(data + ': ' + Math.max.apply(Math, common_values[data]) + '<br>');
}

http://jsfiddle.net/dtanders/QKhu7/