Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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 单击按钮时发送行数据?_Javascript_Html_Bootstrap Modal - Fatal编程技术网

Javascript 单击按钮时发送行数据?

Javascript 单击按钮时发送行数据?,javascript,html,bootstrap-modal,Javascript,Html,Bootstrap Modal,我有下一个信息对象 var data = [ { name: 'John Doe', transactions: [{...},{...},{...}] }, {...} ]; 我正在将此数据插入如下表中: function addRowsData(data) { var table = document.getElementById('main-table'); var rowCount

我有下一个信息对象

var data = [ 
       { 
         name: 'John Doe', 
         transactions: [{...},{...},{...}] 
       }, 
       {...}
    ];
我正在将此数据插入如下表中:

function addRowsData(data) {
  var table = document.getElementById('main-table');
  var rowCount = table.rows.length;
  var tBody = document.createElement('tbody');

  table.appendChild(tBody);

  for (var i = 0; i < data.length; i++) {
    var info = data[i];
    var tr = tBody.insertRow();
    for(var key in info){
      if(key == 'transactions') continue;

      var td = document.createElement('td');

      td.innerHTML = info[key];
      tr.appendChild(td);
    }

    var tdButton = document.createElement('td');
    var button = document.createElement('button');
    var clientId = info.id;

    button.setAttribute('type', 'button');
    button.setAttribute('class', '"btn btn-primary');
    button.setAttribute('id', clientId);
    button.innerHTML = 'More'

    tdButton.appendChild(button);
    tr.appendChild(tdButton)    

    button.addEventListener('click', function() {
      openModal(info.transactions);
    });
  }
}

function openModal(transactions) {
  console.log(transactions);

  var modal = document.getElementById('my-modal');
  var close = document.getElementsByClassName('close')[0];

  close.addEventListener('click', closeModal, false);

  modal.style.display = 'block';
}
函数addRowsData(数据){
var table=document.getElementById('main-table');
var rowCount=table.rows.length;
var tBody=document.createElement('tBody');
表3.儿童(t身体);
对于(变量i=0;i

每一行都有一个按钮,单击打开一个模式,在这个模式上我想显示来自事务数组的数据,我试着这样做
openmodel(info.transactions)
但这始终显示最后一个元素的数据。有没有办法做到这一点,当我单击行按钮时,我可以访问事务数组?

在代码中,您在事件侦听器中引用
info
。但是,变量
info
for
循环中会发生变化,因此在最后对于for循环,info将是最后一个索引。若要解决此问题,您可以传入
eval(data[i])
,而不是传入
info
,这样它将输入实际数据,而不是更改的变量。

尝试在
tdButton.appendChild(button)之前添加按钮单击事件
查看是否将
var info=data[i];
更改为
let info=data[i];
帮助