2013-04-11 82 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