1

このように見えるオブジェクトが私の方法に来ています:

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'
 }
}

1 つの変数が の間にあり、2 番目の変数が にある場合、いくつかの変数を比較しvar1_min, var1_max, selectて保存したいと思います。name, displayvar1_min, var1_maxselect

テスト用にこれを作成しました:

<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)の値field1が小さくても、常に true を返します。

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

目玉貸してください。

4

1 に答える 1

1

オブジェクトには の文字列が含まれており、文字var1_minval()も返します。期待どおりに比較するには、浮動小数点数 (または整数) として解析します。

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

更新された jsFiddleを参照してください

于 2013-04-11T12:47:37.137 に答える