如何在javascript中拥有多个ID时执行具有不同参数的函数?

时间:2017-10-03 04:04:12

标签: javascript jquery python function flask

我有一张表显示了两个参数。我想要做的是在单击按钮时更改每个参数的值。所以每个参数都有自己的按钮,它有自己的特定ID(用jinja2制作)。对于要更改的值,我必须将参数的名称作为函数中的参数,请查看下图:

my actual setup

所以我点击了我的输入框和我的按钮:

<td> <input type=number size=5 id="{{key}}"> </td>
<td> <button onClick="change('{{key}}')" name="{{key}}">change value</button> </td>

困难之处在于,必须通过执行python脚本来进行更改,因此我的函数被描述为:

function change(key){
$.getJSON($SCRIPT_ROOT + '/_change_value', {
    a: $('input[name="key"]').val(),
    b: $('button[name="key"]').val()}, function(data) { alert("Value was changed to " + data.result);});

}

出于测试目的,我只做了一个python函数,只返回一个,检查一切是否正常,但不幸的是。

@app.route('/_change_value')
def change_value():
a = request.args.get('a', 0, type=int)
b = request.args.get('b', 0, type=int)
return jsonify(result=a)

a总是以0返回...如果有人可以帮我这个,我很高兴 我很确定没有传递值键。非常感谢提前

编辑:我发错了这个问题,id是存在而不是输入的名称,但仍然没有解决我的问题......

1 个答案:

答案 0 :(得分:0)

您可以使用解决方案https://jsfiddle.net/1dvjqy11/

$('button').click(function(){
  var a = $(this).closest('tr').find('input[type="number"]').val();
  var b = $(this).closest('tr').find('td').first().html();
  console.log(a, b);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>GPS_Inject_to</td>
      <td>127</td>
      <td>
        <input type="number" size=5 />
      </td>
      <td>
        <button>
          Change Value
        </button>
      </td>
    </tr>
    <tr>
      <td>RPM2_SCALING</td>
      <td>1</td>
      <td>
        <input type="number" size=5 />
      </td>
      <td>
        <button>
          Change Value
        </button>
      </td>
    </tr>
  </tbody>
</table>

我已使用jQuery closest获取父tr并使用jQuery find方法查找子元素。

希望这会对你有所帮助。