Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удаление всех строк внутри tbody (https://javascript.ru/forum/misc/24566-udalenie-vsekh-strok-vnutri-tbody.html)

stos 06.01.2012 10:48

Удаление всех строк внутри tbody
 
Здравствуйте.
Такой вопросик: как удалить все строки внутри tbody сразу.
По одной строке я удаляю без проблем, а вот чтобы все сразу?

И еще, на всякий случай, как передать данные из этих всех строк в POST?

Исходные данные.
сам tbody:
<tbody id="orders_tbody">
				
</tbody>


формирую строки:
function addRow(i1,i2,i3,i4,i5, nic)
		{			
            $('#orders_tbody').each(function()
			{
				var tds = '<tr id="row_'+nic+'">';
				tds += '<td>'+i1+'</td>';
				tds += '<td>'+i2+'</td>';
				tds += '<td>'+i3+'</td>';
				tds += '<td>'+i4+'</td>';
				tds += '<td>'+i5+'</td>';
				tds += '<td align="center" width="30"><img src="imgs/del.png" [B]onclick="delete_row(\'row_'+nic+'\','+i4+','+i5+')"[/B] border="0" height="25" width="25"></td>';
				tds += '</tr>';
				if($('tbody', this).length > 0)
				{
					$('tbody', this).append(tds);
				}
				else 
				{
					$(this).append(tds);
				}
			});		
        }


удалю строку:
function delete_row(r,nq,nsum) 
{
	var l = '#'+r;
	$(l).fadeTo(5000, 1).remove();
	
	var tpr = parseFloat($('#order_total').text() - nsum,2);
	$('#order_total').text(tpr);
	
	var tqua = parseInt($('#totalGoods').text() - nq);
	$('#totalGoods').text(tqua);
    $('#totalPrice').text(tpr);
}


сильно только не ругайте :)

спасибо..

miha-ha 06.01.2012 11:06

попробуй так
 
$('#orders_tbody').html('');

miha-ha 06.01.2012 11:08

Или так:
var e = document.getElementById('orders_tbody');
while ( e.rows[0] ) {
e.deleteRow(0);
}

stos 06.01.2012 11:14

Цитата:

Сообщение от miha-ha (Сообщение 148302)
$('#orders_tbody').html('');

работает. спасибо. мои познания постепенно расширяются :)

тогда такой еще вопрос:
как передать данные из этих всех строк в POST?

Kolyaj 06.01.2012 11:46

Цитата:

Сообщение от stos
работает. спасибо. мои познания постепенно расширяются

Осталось в IE проверить.

miha-ha 06.01.2012 12:11

используй подобную функцию:
function postwith (to,p) {
  var myForm = document.createElement("form");
  myForm.method="post" ;
  myForm.action = to ;
  for (var k in p) {
    var myInput = document.createElement("input") ;
    myInput.setAttribute("name", k) ;
    myInput.setAttribute("value", p[k]);
    myForm.appendChild(myInput) ;
  }
  document.body.appendChild(myForm) ;
  myForm.submit() ;
  document.body.removeChild(myForm) ;
}


применение:
<a href="javascript:postwith('post.php',{row1:'dataRow1',row2:'dataRow2'})">click</a>

miha-ha 06.01.2012 12:22

Но ты мешаешь логику и представление!
Тебе необходимо разделить данные и их отображение.
Например:
//данные
var tableData = [{name: 'ivan', age: 20}, 
{name:'kolyan', age: 21}, 
{name:'miha', age: 22}];

//отображение tableData
function drawTable(dataTable){
   //1.очистить таблицу
   //2.добавить строки
}


Таким образом ты всегда работаешь с данными и обновляешь отображение в случае изменения данных. Например при удалении строки нужно перерисовать таблицу. Соответсвенно именно данные и будешь передавать на сервер...

stos 06.01.2012 12:28

Цитата:

Сообщение от Kolyaj
Осталось в IE проверить.

хм. поразительно. в осле всё работает именно так как должно работать. чтобы норм в хроме ипр. работало надо будет еще проверок на валидность написать.

Цитата:

Сообщение от miha-ha
<a href="javascript:postwith('post.php',{row1:'dataRo w1',row2:'dataRow2'})">click</a>

я что-то не понимаю или здесь мы отсылает содержимое двух строк?

miha-ha 06.01.2012 12:37

Цитата:

Сообщение от stos
я что-то не понимаю или здесь мы отсылает содержимое двух строк?

да именно

stos 06.01.2012 17:57

Цитата:

Сообщение от miha-ha
Но ты мешаешь логику и представление!
Тебе необходимо разделить данные и их отображение.

всё в порядке с логикой и представлением :)

Пробую отсылать.
Отпишусь о результатах :)


Часовой пояс GMT +3, время: 09:51.