2013-04-11 81 views
2

物体看起来像这样来了我的方式:JS比较变量,多层次的对象

var data = { 
a0: { 
    name: 'long name 0', 
    var1_min: '10', 
    var1_max: '99', 
    select: ['alpha', 'gamma'], 
    display: 'value0' 
}, 
b12: { 
    name: 'long name 1', 
    var1_min: '1', 
    var1_max: '999', 
    select: ['beta'], 
    display: 'value1' 
}, 
d7: { 
    name: 'long name 2', 
    var1_min: '1000', 
    var1_max: '0', 
    select: ['alpha', 'beta', 'gamma'], 
    display: 'value2' 
} 
} 

我想一些变量比较var1_min, var1_max, select和保存name, display如果一个变量是var1_min, var1_max之间和第二个变量是在select

我有此测试:

<div style="text-align:center;" id="df"> 
<div class="main"> 
    <form id="form" action="#"> 
    <fieldset> 
    <label for="field1">field1 
    <input type="text" name="field1" id="field1" /> 
    </label> 
    <label for="field2">field2 
    <select name="field2" id="field2"> 
     <option value="alpha">alpha</option> 
     <option value="beta">beta</option> 
     <option value="gamma">gamma</option> 
    </select> 
    </label> 
    </fieldset> 
    <br /> 
    <button type="submit">submit</button> 
    </form> 
    <span id="span"></span> 
</div> 
</div> 
$('#form').submit(function() { 
$('#span').empty(); 
var field1 = $('#field1').val(); 
var field2 = $('#field2').val(); 
for (var x in data) { 
    if (data.hasOwnProperty(x)) { 
    $('#span').append(x + '<br />'); 
    for (var y in data[x]) { 
    if (data[x].hasOwnProperty(y)) { 
    $('#span').append(y + " => " + data[x][y] + '<br />'); 
    } 
    } 
    } 
    if (field1 >= data[x].var1_min) { 
    $('#span').append('true' + '<br />'); 
    } 
} 
return false; 
}); 

if (field1 >= data[x].var1_min)始终返回true,即使在field1值越小。

http://jsfiddle.net/6UyPA/3/

请借给我你的眼球。

+0

你确定他们是两个号码?尝试使用'parseInt(field1);'或'parseFloat(field1);将它们解析为整数或浮点数;'' – 2013-04-11 12:45:21

回答

2

对象包含var1_min的字符串,并且val()也返回字符串。要比较他们为你想到,解析它们的花车(或整数):

if (parseFloat(field1) >= parseFloat(data[x].var1_min)); 

updated jsFiddle