2016-03-08 80 views
-2

我想通过不同的数组值到onclick函数,当点击按钮显示结果。当我点击第一个“显示”按钮时,我的预期结果应该是4和5,第二个“显示”按钮应该是5和6.但我的代码只显示5和6的第一个和第二个按钮,我怎么能得到预期结果?传递不同的数组到onclick函数

<table name="itemTable" id="itemTable" style="width:100%"> 
<tr> 
    <th style="width:5%"></th> 
    <th style="width:5%"></th> 
    <th style="width:50%">2</th> 
    <th style="width:10%">3</th> 
    <th style="width:15%">4</th> 
    <th style="width:15%">5</th> 
</tr> 
</table> 
<script type="text/javascript"> 
var member_data= [];//if declare here, all all of the row get the latest id 
addrow(1); 
addrow(2); 

function addrow(branch_id){ 
    //var member_data= [];//if declare here will show "member_data is not defined" 
    member_data= []; 
    member_data.push({ 
     phone: 123, 
     name: "aaa", 
     id: 3 + branch_id 
    }); 
    member_data.push({ 
     phone: 456, 
     name: "bbb", 
     id: 4 + branch_id 
    }); 

    ttt(branch_id,member_data); 
} 

function ttt(branch_id,member_data){ 
    var table = document.getElementById("itemTable"); 
    var tableRow = table.rows.length; 
    var row = table.insertRow(tableRow); 
    var cell1 = row.insertCell(0); 

    cell1.innerHTML = 
        '<button type="button" onclick="show_member(member_data)">Show</button>'//this line of show "member_data is not defined" 
        + '<input type="text" name="branch" value="'+branch_id+'">'; 
} 

function show_member(aaa){ 
    for (var i = 0; i < aaa.length; i++) { 
     //console.log(aaa[i]); 
     alert(JSON.parse(aaa[i].id)); 
    } 
} 

回答

0

我预期的结果时,点击第一个“显示”按钮应该是4 和5,第二个“显示”按钮应该是5和6。但我的代码只 秀5和6为第一个和第二个按钮。

因为到了onclick被调用的时候,成员数据已经被改变,因为它是全局定义的,并且它的值为每个新按钮更新。

更改addRow方法,下面让member_data现在包含数据的所有分支机构

function addrow(branch_id){ 
    member_data= []; 
    member_data[branch_id].push({ 
     phone: 123, 
     name: "aaa", 
     id: 3 + branch_id 
    }); 
    member_data[branch_id].push({ 
     phone: 456, 
     name: "bbb", 
     id: 4 + branch_id 
    }); 

    ttt(branch_id,member_data); 
} 

同样ttt作为

function ttt(branch_id,member_data){ 
    var table = document.getElementById("itemTable"); 
    var tableRow = table.rows.length; 
    var row = table.insertRow(tableRow); 
    var cell1 = row.insertCell(0); 

    cell1.innerHTML = 
        '<button type="button" onclick="show_member(member_data, '+ branch_id +')">Show</button>'//this line of show "member_data is not defined" 
        + '<input type="text" name="branch" value="'+branch_id+'">'; 
} 

最后show_member作为

function show_member(aaa, branchId){ 
    for (var i = 0; i < aaa[branchId].length; i++) { 
     //console.log(aaa[i]); 
     alert(JSON.parse(aaa[branchId][i].id)); 
    } 
} 
+0

我按照addrow ,并显示“无法读取属性'推'未定义的“ – Arzozeus

+0

@Arzozeus对不起,在推送'member_data [branch_id] = []之前加上这个;' – gurvinder372

+0

谢谢@ gurvinder372,我能够得到我想要的,非常感谢 – Arzozeus