Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   $(#name).text(str) (https://javascript.ru/forum/events/29240-%24-name-text-str.html)

Махач 20.06.2012 19:21

$(#name).text(str)
 
Доброго времени суток!

Помогите пожалуйста!
Написал код, добавляющий по клику на кнопку новую строку в таблицу
$("#add").click(function () {
				//alert(i);
				$('<tr id="'+id+'"><td></td></tr>').appendTo("#tableName > tbody");
				//$("div.#mas").html("I: "+i+"<br />----------------------------<br />");
				var selector = '#tableName > tbody #'+(id);
				$(selector).html('<td>'+par1+'</td><td>'+par2+'</td><td>'+par3+'</td><td>'+par4+'</td><td>'+par5+'</td><td>'+par6+'</td><td id="potoktd">'+par7+'</td><td id="archivetd">'+par8.toFixed(0)+'</td><td><input type="button" id="delete" value="Удалить" del="'+id+'" /></td>');
				id++;
				sum = 0;
				for (var j=1; j<id; j++) {
					sum += parseFloat($("table#tableName tr:eq("+j+") td:eq(6)").html()); 
				};
				alert(sum);
				$("div #sum span").text(sum);
			});
В алерте всё правильно выводит, но писать в див (> span) отказывается. В чём причина. Всю голову поломал.

tadjik1 20.06.2012 19:37

жуткий код, попробуйте пробел убрать $('div#sum span') , если у вас <div id="sum">, но вообще переписать лучше всё)

Махач 20.06.2012 19:51

Попробую, как доберусь до компа (но вроде я это пробовал).

А что жуткого? :)

Deff 20.06.2012 19:56

<div  id=sum>
  <span><!--></span
</div>

<script type="text/javascript">

   $("#add").click(function () {
   var TR_add='<tr id="'+id+'"><td></td></tr>';
   var INPadd='<input type="button" id="delete" value="Удалить" del="'+id+'" />';
   var attachadd='\
<td>'+par1+'</td>\
<td>'+par2+'</td>\
<td>'+par3+'</td>\
<td>'+par4+'</td>\
<td>'+par5+'</td>\
<td>'+par6+'</td>\
<td id="potoktd">\'+par7+'</td>\
<td id="archivetd">'+par8.toFixed(0)+'</td>\
<td>'+INPadd+'</td>'

   $("#tableName").append(TR_add);  
   $('#'+id+':first').html(attachadd);
   id++; sum = 0;

   for (var j=1; j<id; j++) {
     sum += parseFloat($("table#tableName tr:eq("+j+") td:eq(6)").html()); 
   };
   alert(sum);
   $("div #sum span").text(sum);

  });
</script>

Serg_pnz 21.06.2012 01:03

div#sum это зачем??? id уникален.

upd:
1. Всем назначать id="delete" - так нельзя. Тогда уж id="delete"+j (косяк не только с кнопкой)
2. Если кнопка удаляет текущую строку, то можно (добавив в нее класс, к примеру)
$('input.del').live('click', function(){$(this).parents('tr').remove()})

//код надо проверить, пишу вслепую, но смысл думаю понятен

Или добавление не множественное, а один раз?

Deff 21.06.2012 01:27

Цитата:

Сообщение от Serg_pnz
1. Всем назначать id="delete" - так нельзя. Тогда уж id="delete"+j (косяк не только с кнопкой)

Лучше уж класс назначать ... Да мну на код даж не глядел - выправил для удобочитаемости
Скорее не низзя, а не корректно, даж на jQuery приходицо потом извращацо типо:
$("nput[id='delelete']").eq(2)

devote 21.06.2012 11:07

Цитата:

Сообщение от Serg_pnz
div#sum это зачем??? id уникален.

вот когда jQuery умрет, тогда и ID перестанет быть уникальным :D ведь только он ищет один элемент по ID а не несколько если они одинаковы.. Хотя встроенный querySelectorAll возвращает все элементы с одним и тем же ID

Serg_pnz 21.06.2012 11:59

devote, минуточку! Пройдемся по понятиям!
Как это идентификатор может быть не уникальным?

Махач 21.06.2012 12:13

Цитата:

Сообщение от Serg_pnz (Сообщение 182887)
upd:
1. Всем назначать id="delete" - так нельзя. Тогда уж id="delete"+j (косяк не только с кнопкой)
2. Если кнопка удаляет текущую строку, то можно (добавив в нее класс, к примеру)
$('input.del').live('click', function(){$(this).parents('tr').remove()})

//код надо проверить, пишу вслепую, но смысл думаю понятен

Я написал вот так
$('#delete').live("click", function () {
				var del = $(this).attr("del");
				var selector = '#resultMonitor > tbody #'+(del);
				$(selector).remove();
			});
но думаю то, что Вы написали корректнее =).
Цитата:

Сообщение от Serg_pnz (Сообщение 182887)
Или добавление не множественное, а один раз?

Добавление множественное.

Махач 21.06.2012 12:23

я нашёл ошибку (видимо "утро вечера мудренее", всё таки работает :)).
Я в div'е написал <div id="#sum"><span></span></div>. :lol:

Махач 21.06.2012 12:23

Всем большое спасибо!
Отдельное спасибо за оптимизацию кода :)

devote 21.06.2012 15:11

Цитата:

Сообщение от Serg_pnz
devote, минуточку! Пройдемся по понятиям!
Как это идентификатор может быть не уникальным?

а все логично и просто, это же HTML, обычный синтаксис XML, а атрибут ID в первую очередь атрибут как и все другие атрибуты, и вполне имеет право быть не уникальным. От этого и заключение того что ID в HTML не обязательно должен быть уникальным, а прозвали его так лишь из соображения того что есть такая функция как getElementById которая возвращает лишь один элемент, от того ID и решили прозвать уникальным, ибо все равно другой тег с таким атрибутом не достать (было во времена отсутствия querySelectorAll). Вот такой вот расклад.


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