Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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,我得到了一个表,它有一个如下所示的条目: <tr> <td><input type="checkbox" name="ids[]"/><a style="cursor: pointer;" onclick="addtopath('parameter1', 'parameter2')" class="btn_addpath"> Add</a></td> </tr> 添加 正如您所看到的,每个表项都对函数“ad

我得到了一个表,它有一个如下所示的条目:

<tr>
<td><input type="checkbox" name="ids[]"/><a style="cursor: pointer;" onclick="addtopath('parameter1', 'parameter2')" class="btn_addpath"> Add</a></td>
</tr>

添加
正如您所看到的,每个表项都对函数“
addtopath('parameter1','parameter2');
”进行计数

参数通过php生成;所以每一项都是不同的。此外,每个条目都有一个复选框。这就是问题发生的地方

我想创建一个函数,为每个表项运行“addtopath”函数,该函数被选中,就好像用户单击了“Add”按钮一样

希望它有意义。

现代浏览器

function runChecked() {
    var links = mytable.querySelectorAll("input[name='ids[]']:checked + a.btn_addpath");
    [].forEach.call(links, function(link) {
        link.onclick();
    });
}
IE8+

function runChecked() {
    var inputs = mytable.querySelectorAll("input[name='ids[]']");
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked)
            inputs[i].nextSibling.onclick();
    }
}
函数runChecked(){
var inputs=mytable.querySelectorAll(“输入[name='ids[]']”);
对于(变量i=0;i
IE6+

function runChecked() {
    var inputs = mytable.getElementsByTagName("input");
    for (var i = 0, len = inputs.length; i < len; i++) {
        if (inputs[i].name === "ids[]" && inputs[i].checked)
            inputs[i].nextSibling.onclick();
    }
}
函数runChecked(){
var inputs=mytable.getElementsByTagName(“输入”);
对于(变量i=0,len=inputs.length;i
这应该在复选框中的所有链接上模拟onClick事件

$("input[type=checkbox]:checked + a").click();

如果您想在某个时候移动到jQuery,我会将参数添加到数据属性中。这也是很好的做法

<td><input type="checkbox" data-one="one" data-two="two" class="btn_addpath"/>Add</td>
<td><input type="checkbox" data-one="three" data-two="four" class="btn_addpath"/>Add</td>
<td><input type="checkbox" data-one="five" data-two="six" class="btn_addpath"/>Add</td>
<td><input type="checkbox" data-one="seven" data-two="eight" class="btn_addpath"/>Add</td>

function addToPath(p1, p2) {
  console.log(p1, p2);
}

var checkboxes = document.getElementsByClassName('btn_addpath');
var checkboxArr = [].slice.call(checkboxes);
checkboxArr.forEach(function (el) {
  var p1 = el.getAttribute('data-one');
  var p2 = el.getAttribute('data-two');
  el.onchange = function () {
    if (this.checked) { addToPath(p1, p2); }
  };
});
添加
添加
添加
添加
函数addToPath(p1、p2){
控制台日志(p1,p2);
}
var复选框=document.getElementsByClassName('btn_addpath');
var checkboxArr=[].slice.call(复选框);
checkboxArr.forEach(功能(el){
var p1=el.getAttribute('data-one');
var p2=el.getAttribute('data-two');
el.onchange=函数(){
如果(this.checked){addToPath(p1,p2);}
};
});

如果使用jQuery,可以使用以下代码:

    $("input[type=checkbox]:checked").siblings('a').click();

在标记中未指定jQuery时测试它。@Andy,没有指定jQuery不能使用-。你的否决票是不公平的:)如果OP想要使用jQuery,他会在问题中添加一个jQuery标记。他没有。他从来没有说过他想要jQuery。