如何将文本字段中的值与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。 我的问题是我想不起一个好的算法甚至开始编码。你能给我一个主意吗?我需要先做什么。
答案 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());
});
答案 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>');
}