首页 > 解决方案 > 如何将js函数中的对象作为函数参数传递?

问题描述

我在表中有一个 jquery foreach 附加列表。我想要的是传递我从 ajax 成功函数获得的完整对象。但是当我尝试将对象作为参数传递给不同的 JS 函数时,参数变得未定义。

这是我的附表:

$.ajax({

  type: "post",
  url: "@Url.Content("~/Estimate/GetOffsetLetterHeadCost
  ")",
  data: $('#OffLetterHeadForm').serialize(),
  datatype: "json",
  traditional: true,
  success: function(data) {

    var Json = data;

    $.each(Json, function(index, obj) {


      var row = '<tr>' + '<td style="padding:10px" > <b style="font-size:18px">' + obj.VendorName + '</b>  </td>  ' + '<td><label  id="machineId' + index + '">' + obj.MachineName + '  < / label > < /td > ' + '<td> <input type="button"   value="Order" id="btn' + index + '"onclick = "SaveOffsetOrder(obj)" / > < /td></tr > ';

      $("#AllVendorsList").append(row);

    });

  }
});


function SaveOffsetOrder(obj) { // here i am getting obj undefined
  // do something with obj
}
<table id="AllVendorsList" class="table table-striped table-hover  " style="font-size:14px; font-family:'Trebuchet MS'"></table>

请帮忙..谢谢

标签: javascriptjqueryasp.net-mvc

解决方案


而不是使用 onclick 使用绑定,这将使生活变得更加轻松。例如

'<td> <input type="button"   value="Order" id="btn' + index + '" 
      / > < /td></tr > '
$("#AllVendorsList").append(row);
$("#btn" + index).bind("click",{obj:obj},SaveOffsetOrder);

function SaveOffsetOrder(e){
 console.log(e.data.obj);//this will return your object.
}

推荐阅读