【问题标题】:Javascript/JQuery iterate through table rows and cells and output an attr of checked checkboxes to consoleJavascript/JQuery 遍历表格行和单元格并将选中的复选框的属性输出到控制台
【发布时间】:2014-03-10 17:17:30
【问题描述】:

我有以下代码,它应该遍历每个表行并转储我在早期 javascript 段中声明的数组。然后,如果复选框被选中,并且它的属性为“changed=yes”,那么它应该被推送到数组中,并且应该在控制台中输出值以及应该作为变量输出的“路径”属性每次函数找到一个被选中和更改的新复选框时,都可以覆盖。那么我的代码有什么问题?这些函数包含在一个函数中,当用户在表单上单击提交时调用该函数。

JsFiddle:http://jsfiddle.net/hU89p/392/

        $('#myTable1 tr').each(function(){
        myArray = [];
                    $.each($("input[type='checkbox']:checked").closest("td").siblings("td"),
                    function () {
                    if($(this).data("changed") == 'yes'){
                        myArray.push($(this).attr('checkboxtype'));
                        filepath = $(this).attr('path');
                        console.log(myArray);
                        console.log(filepath);
                    }
                });
            });

【问题讨论】:

  • 你能给我们提供它的 HTML 部分吗?
  • 当然,我会做一个jsfiddle
  • 这里是 jsfiddle:jsfiddle.net/hU89p/392

标签: javascript jquery checkbox


【解决方案1】:

这里是Working Fiddle

保持简单:

$('#myTable1 tr').each(function() {
       var columns = $(this).find('td');

       columns.each(function() {
           var box = $(this).find('input:checkbox');

           if(box.is(":checked") && box.attr("changed") == 'yes')
           {
                myArray.push(box.attr('checkboxtype'));
                filepath = box.attr('path');                            
            }
        });
    });
         console.log(myArray);
  });

【讨论】:

  • 这行得通,但是每次到达新行时数组都应该清除并且应该输出。但是,如果将 console.log(myArray) 放在 if 语句中,它会向控制台发送垃圾邮件。如果我将 console.log(myArray) 放在 if 语句中,为什么会向控制台发送垃圾邮件?
  • 你想显示什么...你可以推送到数组并在控制台中记录它吗?向控制台发送垃圾邮件,因为它在两个 each 循环内(一个用于行,另一个用于列)
  • 啊,我明白了,没有每个循环还有其他方法吗?最终,每次选中一个框并将其连续更改为另一个 php 表单时,我都会使用 JSON 或 AJAX 传递一个数组,我不希望结果在数组中累积,除非这是唯一可行的方法。
  • 好的,您可以将事件处理程序附加到您的复选框单击,然后在检查时执行 ajax ?
【解决方案2】:

您应该使用$("input[type='checkbox']:checked").closest("td").siblings("td").each()

查看$().each()$.each() 之间的区别。

【讨论】:

  • 没有错误:/,但另一个解决方案似乎有效,除了它向我的控制台发送垃圾邮件而不是说向我显示两个已更改复选框的结果,它只会显示 20 多次
【解决方案3】:
try this :-

     $('#myTable1 tr').each(function () {
                myArray = [];
                $(this).find("td input:checkbox").each(function () {
                    if ($(this).is(":checked") && $(this).attr("changed") == 'yes') {
                        myArray.push($(this).attr('checkboxtype'));
                        filepath = $(this).attr('path');
                        console.log(myArray);
                        console.log(filepath);
                    }
                });
            });

【讨论】:

  • 这或多或少是我想要的,唯一的问题是我的控制台收到的垃圾邮件超出了我应该看到的范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多