2012-06-07 2 views
0

Эй, я хочу изменить атрибут имени таблицы после того, как строка оторвана от одной группы к другой. Я получаю строку с именем атрибута имени и именем цели. но мой 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'); 

Off тему, но вам не нужно проходить row.id, а затем использовать getElementById. Вы можете просто передать строку напрямую.

+0

IE делает (или использовал, по крайней мере, не проверял последние версии), отражая стандартные и нестандартные свойства и атрибуты, Firefox и другие, однако, нет. – RobG

+0

@RobG: Ну, конечно, это так ... ';)' Не знал этого. Спасибо за примечание. ... О, подождите, я это знаю. Просто обнаружил это пару недель назад. Спасибо за напоминание. –

+0

Позвольте мне попробовать, но когда я установил атрибут имени, как вы сказали, он сказал undefined –

Смежные вопросы