如何获取动态创建的表的值?

时间:2019-08-01 14:01:09

标签: javascript arrays ajax object

enter image description here

上面的屏幕截图显示了实际正确的形式。为了得到这个,我尝试了以下代码。我的<td>包含一个标题以及一个子点,它们是动态添加的。点击提交按钮时,我想阅读与该标题相对应的标题和子点。数据格式如下。

我正在分别使用标题和数据动态添加行。我试图在通过AJAX将数据发送到服务器之前将数据收集到一个对象中。我无法读取给定格式的数据。

HTML代码


<div class="container-fluid">
<h4>Scorecard Metrics</h4>
<div class="row">
<div class="col">
<div class="card">
<div class="card-body">
<div class="button-bar">
<button class="btnn btnn--pill add-point">Add Sub-Point</button>
<button class="btnn btnn--pill add-heading">Add Heading</button>
</div>
<div class="table-responsive-sm">
<table id="table-scorecard_co" class="table table-bordered">
    <thead>
        <tr>
            <th style="width: 100px!important;" rowspan="2">Metrics</th>
            <th style="width: 92px!important;" rowspan="2">Weightage</th>
            <th colspan="4" scope="colgroup">Target</th>
            <th style="width: 85px!important;" rowspan="2">Actions</th>
        </tr>
        <tr>
            <th>L1</th> 
            <th>L2</th>
            <th>L3</th>
            <th>L4</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td style="display: none;">
                <a class="plus" title="Plus" ><i class="material-icons">&#xE03B;</i></a>
                <a class="update" title="Update" data-toggle="tooltip"><i class="material-icons">&#xE254;</i></a>
                <a class="destroy" title="Destroy"><i class="material-icons">&#xE872;</i></a>
            </td>

            <td style="display: none;">
                <a class="add" title="Add" ><i class="material-icons">&#xE03B;</i></a>
                <a class="edit" title="Edit" data-toggle="tooltip"><i class="material-icons">&#xE254;</i></a>
                <a class="delete" title="Delete"><i class="material-icons">&#xE872;</i></a>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div class="button-bar">
<button class="btnn btnn--pill submit" id="Scoresubmit">Submit</button>
</div>
</div>
</div>
</div>
</div>

</div>
<!-- #/ container -->
</div>


JAVASCRIPT CODE


$(document).ready(function(){
    $('[data-toggle="tooltip"]').tooltip();
    var actions = $("table td:last-child").html();
    var menubar = $("table td:nth-last-child(2)").html();

    $(".add-heading").click(function(){
        $(this).attr("disabled", "disabled");

        var index = $("table tbody tr:last-child").index();

        var row = '<tr class="heading">' +
        '<td id="HeadingLabelScorecard" colspan="3"><span id="label_hide" class="heading_label">Heading</span><input id="heading_label_input" class="heading_label-box" type="text" class="form-control"></td>' +
        '<td id="HeadingLabelScorecard" colspan="2"><span id="label_hide2" class="heading_weight-label">Total Weightage</span><input class="Tweightage" id="wei'+(wei) + '" type="number" ></td>' +
        '<td colspan="1"><span id="label_hide3" class="heading_labelCheckbox">Divide Weightage</span><input class="heading_checkbox" name="Dividecheckbox" id="heading_checkbox" type="checkbox">' +
        '<td style="text-align:center;">' + actions + '</td>' +
        '</tr>';

        $("table").append(row);  
        $("table tbody tr").eq(index + 1).find(".add, .edit").toggle();
        $('[data-toggle="tooltip"]').tooltip();
        wei ++;
    });

    $(".add-point").click(function(){
        $(this).attr("disabled", "disabled");
        var index = $("table tbody tr:last-child").index();  //TO ADD ROW AS LAST Child
        var lastCheckBox = $('[name="Dividecheckbox"]:last').prop("checked");   //get status of last checkbox
        if(lastCheckBox==false){
        //Enable row
        var row = '<tr class="Parameters" style="text-align: center;">' +
        '<td><input class="subpoint_label-box" type="text" class="form-control"id="metrics'+(unique_id) + '"></td>' +
        '<td><input disabled class="subpoint_weightage2"  id="weightage'+(unique_id) + '" type="number" ></td>' +
        '<td><input class="slider_min-value" type="text" id="ex0n'+i+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="ex'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text"  id="ex1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
        '<td><input class="slider_min-value" type="text" id="lx0n'+(i)+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="lx'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text" id="lx1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
        '<td><input class="slider_min-value" type="text" id="zx0n'+(i)+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="zx'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text" id="zx1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
        '<td><input class="slider_min-value" type="text" id="yx0n'+(i)+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="yx'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text" id="yx1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
        '<td width="20">' + menubar + '</td>' +
        '</tr>';            
}


        else if(lastCheckBox==true){
            var row = '<tr class="Parameters" style="text-align: center;">' +
            '<td width="20"height="50"><input class="subpoint_label-box" type="text" class="form-control"id="metrics'+(unique_id) + '"></td>' +
            '<td width="20"><input class="subpoint_weightage"  id="weightage'+(unique_id) + '" type="number" ></td>' +
            '<td><input class="slider_min-value" type="text" id="ex0n'+i+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="ex'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text"  id="ex1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
            '<td><input class="slider_min-value" type="text" id="lx0n'+(i)+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="lx'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text" id="lx1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
            '<td><input class="slider_min-value" type="text" id="zx0n'+(i)+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="zx'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text" id="zx1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
            '<td><input class="slider_min-value" type="text" id="yx0n'+(i)+'" value="20"><b id="percentage">%</b><input class="subpoint-sbody" style="width: 120px;" name="n'+i+'" id="yx'+(unique_id) + '" type="text" data-slider-min="0" data-slider-max="100" data-slider-value="[20,80]"/><input class="slider_max-value" type="text" id="yx1n'+(i)+'" value="80"><b id="percentageMax">%</b></td>' +
            '<td width="20">' + menubar + '</td>' +
            '</tr>';
        }
        else{
            alert("Please Add Heading!!");
        }     
$("table").append(row);  
$("table tbody tr").eq(index + 1).find(".plus, .update").toggle();
$('[data-toggle="tooltip"]').tooltip();

$("#ex"+unique_id).slider({});
$("#ex"+unique_id).on("slide", function(slideEvt) {
    var nid=$(this).attr('name');
    $("#ex0"+nid).val(slideEvt.value[0]);
    $("#ex1"+nid).val(slideEvt.value[1]);
});

$("#lx"+unique_id).slider({});
$("#lx"+unique_id).on("slide", function(slideEvt) {
    var nid=$(this).attr('name');
    $("#lx0"+nid).val(slideEvt.value[0]);
    $("#lx1"+nid).val(slideEvt.value[1]);
});

$("#zx"+unique_id).slider({});
$("#zx"+unique_id).on("slide", function(slideEvt) {
    var nid=$(this).attr('name');
    $("#zx0"+nid).val(slideEvt.value[0]);
    $("#zx1"+nid).val(slideEvt.value[1]);
});

$("#yx"+unique_id).slider({});
$("#yx"+unique_id).on("slide", function(slideEvt) {
    var nid=$(this).attr('name');
    $("#yx0"+nid).val(slideEvt.value[0]);
    $("#yx1"+nid).val(slideEvt.value[1]);
});
unique_id++
i++      
});


我试图获取数据的原因



$('#Scoresubmit').click(function () {
    GetCoScoreCard();
//ajax calll
});


function GetCoScoreCard() {

$('#scorecard_co .heading').each(function () { //tr 

    var TotalWeightage;
    var item = $(this).closest("tr").find('td');
$.each(item, function (key, value) {        //Heading

    if (key == 0) {
        Heading1 = ($(value).text());
        this.Heading1 = Heading1;
    }
    else if (key == 1) {
        TotalWeightage = ($(value).text());
    }
    else if (key == 2) {
        lastCheckBox = $('[name="Dividecheckbox"]:last').prop("checked");
    }
});


var parametername, param_Weightage;
$('#scorecard_co  .Parameters').each(function () { //td  //parameters
    var item2 = $(this).closest("tr").find('td');
    $.each(item2, function (key, value) {        
        datalist = ($(value).text());
        if (key == 0) {
            parametername = ($(value).text());
        }
        if (key == 1) {
            param_Weightage = ($(value).text());
        }


        if (key == 2 || key == 3 || key == 4 || key == 5)
        {
            var res = datalist.substring(1, 3);
            var res2 = datalist.substring(6, 8);
            var key1 = 'L' + i;
            MyLevels[key1] = res + "," + res2;
            i++;
        }
    });

    parameters = {
        "Name": parametername,
        "Weightage": param_Weightage,
"Levels": MyLevels,    //array
}

paramarray.push(parameters); //paramNewArray
MyLevels = {};
i = 0;
});

metrics={

    'Heading':Heading1,
'TotalWeitage': TotalWeightage,   //metrics heading and parameters
'DivideWeightage': lastCheckBox,
'parameters': paramarray          // paramNewArray
//work in process
}


var stringyfydata = JSON.stringify(metrics);
data1.push(stringyfydata); alert("Title=" + data1);
console.log(data1);
data = {};
parameters = {};
i = 0;
});
}

期望的数据输出

 [
{"Heading":"SchduleAdherence","TotalWeitage":"20","DivideWeightage":true,"parameters":{"Name":"Scrunity","Weightage":"30","Levels":{"L1":"20,80","L2":"20,80","L3":"20,80","L4":"20,80"}}]},
{"Heading":"Attendence","TotalWeitage":"30","DivideWeightage":true,"parameters":{"Name":"self","Weightage":"30","Levels":{"L1":"20,80","L2":"20,80","L3":"20,80","L4":"20,80"}}]}

]

有两个类(.Heading =读取标题,例如出勤率,另一个是.Parameter =读取子点),我的问题是每次尝试遍历数据,所有参数都反复添加到我的对象中。

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要在go评分代码中重新初始化变量;

function GetCoScoreCard() {
    paramArray = [];
    data1 = [];
    .....
    .....
 }