Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 获取上述td小区的数据字段_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 获取上述td小区的数据字段

Javascript 获取上述td小区的数据字段,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我有一个按钮,可以向表中添加一行。单击即可编辑该表(类似于此处的表:) 但是,我从数据库获取表数据。每个都有一个数据字段属性,该属性与数据库中的字段名相匹配。现在,为了使添加的表行可以像其他行一样进行编辑,我需要使用位于其正上方单元格中的数据字段标记的。我试过几种不同的方法,但总是失败。以下是我的添加行脚本: <script type="text/javascript"> /* Add a new table row to the bottom of

我有一个按钮,可以向表中添加一行。单击即可编辑该表(类似于此处的表:) 但是,我从数据库获取表数据。每个
都有一个
数据字段
属性,该属性与数据库中
字段名相匹配。现在,为了使添加的表行可以像其他行一样进行编辑,我需要使用位于其正上方单元格中的
数据字段
标记
。我试过几种不同的方法,但总是失败。以下是我的添加行脚本:

<script type="text/javascript">
        /*
        Add a new table row to the bottom of the table
    */

    $(document).ready(function()
    {
        $(".add").click(function()
        {
            $("#table").each(function()
            {
                var $table = $(this);
                var id=$('#table tr:last').attr('id');
                var $tr = $("#table").children('tr');
                var $th = $(this).closest('table').find('th').eq($(this).index());
                // Number of td's in the last table row
                var n = $('tr:last td', this).length;
                var tds = '<tr class="edit_tr" id="' + id++ + '">';

                for(var i = 0; i < n; i++)
                {
                    tds += '<td class="edit_td"><input type="text" class="editbox" id="' +
                    id + '" data-field="' + $th + '"/>&nbsp;</td>';
                    console.log($th);
                }
                tds += '</tr>';
                //console.log(tds);
                if($('tbody', this).length > 0)
                {
                    $('tbody', this).append(tds);
                }else {
                    $(this).append(tds);
                }
            });
        });
    });
</script>

/*
将新表行添加到表的底部
*/
$(文档).ready(函数()
{
$(“.add”)。单击(函数()
{
$(“#表”)。每个(函数()
{
var$表=$(此);
var id=$('#表tr:last').attr('id');
var$tr=$(“#表”).children('tr');
var$th=$(this.closest('table').find('th').eq($(this.index());
//最后一个表行中的td数
var n=$('tr:last td',this).length;
var tds=“”;
对于(变量i=0;i0)
{
$('tbody',this).append(tds);
}否则{
$(此).append(tds);
}
});
});
});

现在,请注意
var$th=$(this.closest('table').find('th').eq($(this.index())。这是我得到的最接近的结果。但是,我不想通过
th
访问。我想按数据字段访问。有什么想法吗?

您可以尝试以下方法:

var$th=$(this).closest('table').find('th').last().attr('data-field')


请记住,我根本没有尝试过这一点,但您要做的是查找上次创建的
元素有一个CSS选择器,以及一个有效的属性jQuery选择器。您可以动态构建其中一个选择器,如下所示:


//找到要查找的字段的值
var currentDataField=$(“#表tr:last[data field]”)。数据('field')

//使用该值构建选择器
var previous=当前数据字段-1
变量previousSelector='[data field='+previous+']'
变量$previous=$(previousSelector);

$previous现在保存具有“previous”数据字段的任何项目。您可能需要进行更多的DOM遍历才能完成所需的操作


如果您需要澄清,请告诉我。

为什么不直接通过
$.attr('data-field')
因为我不知道如何获取正在创建的单元格上方单元格的
数据字段。我可能会把所有最后的
tr
数据字段
组成一个数组,但我不知道如何着手做这样的事情。然后我可以在for循环中执行
array[I]
//array for(var I=0;I我尝试了这个,只得到了第二个数据字段中的一个数组。你知道如何进入下一步吗?我很难理解你的例子以及它如何融入我的代码。我有:
currentDataField=$('.edit_-tr:first').find('.edit_-td').first().attr('data-field');对于(var i=0;i
,它似乎几乎可以正常工作。它有一个数组,数组中有正确的第一个和第二个元素,但最后x个元素的数目与第二个相同。我看到循环中的
currentDataField
每次都必须返回到元素0(或第一个标头)。如何使它保持其位置,以便
.next()
从上一个元素而不是第一个元素中获取下一个元素。谢谢