Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JSON数组传递到button jQuery的动态创建的onclick方法中_Javascript_Jquery - Fatal编程技术网

Javascript 将JSON数组传递到button jQuery的动态创建的onclick方法中

Javascript 将JSON数组传递到button jQuery的动态创建的onclick方法中,javascript,jquery,Javascript,Jquery,下面是我的代码,数据是json数组,我想传入Update按钮的onclick方法 function populateData(data) { $(".studentPanel").show(); for (var i = 0; i < data.length; i++) { $(".totalFee" + i).val(data[i].total.amount); for (var j = 0; j <

下面是我的代码,数据是json数组,我想传入Update按钮的onclick方法

function populateData(data) {
        $(".studentPanel").show();
        for (var i = 0; i < data.length; i++) {

            $(".totalFee" + i).val(data[i].total.amount);

            for (var j = 0; j < data[i].submissions.length; j++) {

                var ts = new Date(data[i].submissions[j].created_at);
                var dateString = ts.getDate() + "-" + ts.getMonth() + "-" + ts.getYear();
                console.log(data[i].submissions[j].amount);
                var tableRows = "<tr><td>" + data[i].submissions[j].amount + "</td><td>" + dateString + "</td>" +
                    "<td><button class=\"btn btn-primary Update\" onclick='updateFees(\"" + data[i].submissions[j].id + "\")'>Update</button></td><td><button  onclick='deleteFees(\"" + data[i].submissions[j].id + "\")'  class=\"btn btn-danger Delete\">Delete</button></td>\n</tr>";
                console.log(tableRows);
                $(".feeTable" + i).append(tableRows);
            }

        }
    }
函数填充数据(数据){
$(“.studentPanel”).show();
对于(变量i=0;i
既然您似乎在使用jQuery,我建议您手动添加侦听器,但要做到这一点,您需要先创建元素并将它们存储在变量中

Obs:这段代码可以变得更短更简单,但为了可读性,我已经这样做了

function populateData(data) {
        $(".studentPanel").show();
        for (var i = 0; i < data.length; i++) {

            $(".totalFee" + i).val(data[i].total.amount);

            for (var j = 0; j < data[i].submissions.length; j++) {

                var ts = new Date(data[i].submissions[j].created_at);
                var dateString = ts.getDate() + "-" + ts.getMonth() + "-" + ts.getYear();
                console.log(data[i].submissions[j].amount);

                var
                        tr = $("<tr>"),
                        td1 = $("<td>"),
                        td2 = $("<td>"),
                        td3 = $("<td>"),
                        td4 = $("<td>"),
                        btnUpdate = $("<button class='btn btn-primary Update'>"),
                        btnDelete = $("<button class='btn btn-danger Delete'>");

                $(".feeTable" + i).append(tr);
                tr.append(td1).append(td2).append(td3).append(td4);

                td1.append(data[i].submissions[j].amount);
                td2.append(dateString);

                td3.append(btnUpdate);
                td4.append(btnDelete);

                btnUpdate.append("Update");
                btnDelete.append("Delete");

                btnUpdate.click((event) => {
                    //put whatever your updateFees function does in here
                    console.log(event);
                    console.log(data[i].submissions[j].id); //your data is acessible
                });

                btnDelete.click((event) => {
                    //put whatever your deleteFees function does in here
                    console.log(event);
                    console.log(data[i].submissions[j].id); //your data is acessible
                });
            }
        }
    }
函数填充数据(数据){
$(“.studentPanel”).show();
对于(变量i=0;i{
//将updateFees函数所做的一切放在这里
console.log(事件);
console.log(数据[i].submissions[j].id);//您的数据是可访问的
});
BTN删除。单击((事件)=>{
//将deleteFees函数所做的任何操作都放在这里
console.log(事件);
console.log(数据[i].submissions[j].id);//您的数据是可访问的
});
}
}
}

我还建议您仔细研究jQuery和javascript。

这可以使用数据id属性来完成。 例:


传给什么?请让自己更清楚一点我在表行中创建的是更新按钮有一个onclick方法我无法在该函数中作为参数传递数据如果我看得对,您试图将数组传递到页面的内联代码中,即按钮的onclick属性,这是不可能的。在我继续之前,这真的是你的问题吗?是的,这是我的问题如果你需要添加一个对象数组,你可以使用
JSON.stringify
或通过数据属性来尝试,看看这个。不过,我强烈建议您重构代码以提取HTML,避免使用内联方法等。这对您来说会容易得多
 var tableRows = "<tr>"+
                   "<td>" + data[i].submissions[j].amount + "</td>"+
                   "<td>" + dateString + "</td>" +
                   "<td>"+
                     "<button class='btn btn-primary Update' data-id=" + data[i].submissions[j].id + " onclick='updateFees()'>"+
                        "Update"+
                     "</button>"+
                   "</td>"+
                   "<td>"+
                     "<button onclick='deleteFees()' class='btn btn-danger Delete' data-id=" + data[i].submissions[j].id + ">"+
                       "Delete"+
                     "</button>"+
                    "</td>"+
                  "</tr>";
function updateFees(e){
  var id = $(e.currentTarget).data("id");
  //Rest of the code follows here
}