Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 - Fatal编程技术网

javascript将值传递给函数不起作用

javascript将值传递给函数不起作用,javascript,Javascript,我昨天问了这个问题,但我的代码不清楚,所以无法得到答案,我试图在这里创建一个实际问题的副本 我试图做的是,这是一个html表,我对所有行进行迭代,然后到每行的一个特定列我附加一个事件处理程序,单击该事件处理程序应该输出一些计算对象,但它总是返回{“isTrusted”:true} var ff = function(el){ return function(el){ alert(el) }; // the output is always {"isTrusted":true} }

我昨天问了这个问题,但我的代码不清楚,所以无法得到答案,我试图在这里创建一个实际问题的副本

我试图做的是,这是一个html表,我对所有行进行迭代,然后到每行的一个特定列我附加一个事件处理程序,单击该事件处理程序应该输出一些计算对象,但它总是返回
{“isTrusted”:true}

 var ff = function(el){
    return function(el){ alert(el) }; // the output is always {"isTrusted":true}
 }

function Fi(selector, func) {
         document.querySelectorAll(selector).forEach(function(node{
          node.onclick = func;
          })
       ;}

//-------------- main calling code--------------------------------

 document.querySelectorAll('#myTable > tbody > tr').forEach(function (node) {

    cells = node.querySelectorAll('td');
    var info = {};
    info.age = cells[1].innerText;
    Fi('td:nth-child(1) > a', ff(info));

})
编辑:

我试着这样做:

var ff = function (el) {
   return function() { alert(el) };
}
但问题是 对于表中的每一行,都应该创建一个实际上正在发生的新信息对象

document.querySelectorAll('#myTable > tbody > tr').forEach(function (node) {

    cells = node.querySelectorAll('td');

  //--------->loop over all rows and create info object

    var info = {};
    info.age = cells[1].innerText;

   //---------> when the cell is clicked always the last info object is shown but for every row it should be different

    Fi('td:nth-child(1) > a', ff(info));

})
ff
采用参数
el
。然后它返回一个函数,该函数还接受一个参数
el
。后一个
el
阴影笼罩着前一个
el
。因此,
el
将是直接传递给事件处理程序的参数,而不是传递给
ff
的参数(这将是一个
事件
对象)

去掉内部的
el
参数:

var ff = function (el) {
   return function () { alert(el) };
}
ff
采用参数
el
。然后它返回一个函数,该函数还接受一个参数
el
。后一个
el
阴影笼罩着前一个
el
。因此,
el
将是直接传递给事件处理程序的参数,而不是传递给
ff
的参数(这将是一个
事件
对象)

去掉内部的
el
参数:

var ff = function (el) {
   return function () { alert(el) };
}

`document.querySelectorAll。(`这无效。在
querySelectorAll
@CertainPerformance之后有一个额外的
,在这里键入时是打字错误。修复了它,但这不是suue
querySelectorAll
只接受1个参数。如果要在
节点内搜索,请使用
节点。querySelectorAll('td'))
Fi
的第二个参数应该是
function(){ff(info);}
`document.queryselectoral。(`这是无效的。在
querySelectorAll
@CertainPerformance之后有一个额外的
,在这里键入时是打字错误。修复了它,但这不是suue
querySelectorAll
只接受1个参数。如果要在
节点内搜索,请使用
节点.querySelectorAll('td'))
Fi
的第二个参数应该是
function(){ff(info);}
。我使用了您最初给出的版本,但在这种情况下,info对象始终是wsa ebing生成的最后一个值,我不确定我是否理解您的意思。@anekix
Fi('td:nth child(1)>a',ff(info));
是一个通用选择器,因此它将始终向所有具有最新信息值的
a
元素添加事件处理程序。@anekix gvmani已经指出了上述问题。您只需将事件处理程序附加到所有
td:n子元素(1)
。再附加到所有全局
td:n子元素(1)
您文档中的任何地方!@gvmani为什么使用最新的
信息
值?这正是发生的事情,我不希望出现这种行为。为了避免这种情况,我创建了
ff()
function我使用了您最初给出的版本,但在这种情况下,info对象始终是wsa ebing生成的最后一个值。我不确定我是否理解您的意思。@anekix
Fi('td:nth child(1)>a',ff(info));
是一个通用选择器,因此它将始终向所有具有最新信息值的
a
元素添加事件处理程序。@anekix gvmani已经指出了上述问题。您只需将事件处理程序附加到所有
td:n子元素(1)
。再附加到所有全局
td:n子元素(1)
您文档中的任何位置!@gvmani为什么使用最新的
info
值?这正是发生的情况,我不希望出现这种行为。为了避免这种情况,我创建了
ff()
函数