2012-06-07 36 views
0

嘿,我想更改表格的名称属性,一旦行从一个组拖到另一个组。我得到要更改的名称属性的行和目标名称。但我的javascript功能并没有改变该行的名称 这是我试过到目前为止使用javascript更改表格行属性使用javascript

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#sort').tableDnD({ 
       onDrop: function(table, row) { 
        var patent_id = row.id; 
        var target_group_id = getpreviousSiblingName(row); 
        var data = {PID:patent_id, TGID:target_group_id}; 
        **changename(patent_id,target_group_id);** 
        $.ajax({ 
         type: "POST", 
         data: data, 
         url:"{{ path('MunichInnovationGroupBundle_patent_dragpatent') }}", 
         cache: false 
        }); 
       }, 
       dragHandle: ".dragHandle" 
      }); 
      $("#sort tr").hover(function() { 
       if($(this).hasClass('tr_group')) 
        $(this.cells[0]).addClass('showDragHandle'); 
       }, function() { 
        $(this.cells[0]).removeClass('showDragHandle'); 
      }); 

     }); 
</script> 

    <script> 
    function changename(row_id,row_name){ 
     var row = document.getElementById(row_id); 
     alert(row_id); 
     alert(row_name); 
     row.name=row_name; 
     return true; 
    } 
</script> 
+0

在jsfiddle上放了一个工作示例,所以我们可以看看 – wroniasty

+0

我不知道你的'getpreviousSiblingName'函数是如何工作的,但是请注意,在一些浏览器中,TR的直接兄弟可能是文本节点,而不是另一个TR。 – RobG

+0

@RobG我已经管理的空白作为节点的问题:)我写了一个javascript函数忽略空白作为节点 –

回答

2

一个tr没有.name属性,因此该属性不会自动转移到该属性。

改为使用setAttribute()来设置自定义属性。

function changename(row_id,row_name){ 
    var row = document.getElementById(row_id); 
    row.setAttribute('name',row_name); 
    return true; 
} 

然后再次找回它,你需要getAttribute

row.getAttribute('name'); 

题外话,但你并不需要通过row.id,然后用getElementById。你可以直接传递行。

+0

IE浏览器确实(或者至少曾经用过,没有测试过最新版本)反映了标准和非标准的属性和属性,但Firefox和其他浏览器却没有。 – RobG

+0

@RobG:当然它确实......';)'不知道。谢谢你的提示。 ......等等,我确实知道。几个星期前刚刚发现它。感谢您的提醒。 – 2012-06-07 13:45:24

+0

让我试试它,但当我设置名称属性,因为你建议它说undefined –