Объясните пожалуйста почему данный код не работает?
Не работает потому, что
var input = $( row.cells[3].innerHTML );

не возвратит текущий объект (видимо у вас там <input type="button">
 лежит), а создаст новый, которому и поменяет значение.
На мой взгляд, раз уж используете jquery, то не нужно мешать его с нативным кодом.

Ваш кусок

var row = $('#bahn_list tr').eq( index + 1 )[0];
var name = row.cells[0].innerHTML;
var input = $( row.cells[3].innerHTML );

можно заменить на

var row = $('#bahn_list tr').eq(index + 1);
var name = $('td:first', row).html();
var input = $('td:eq(3) > input', row);


И еще, зачем этот дубль?

input.val( "Розбанить" );
input.attr('value', 'Розбанить');
