Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   добавление элементов списка (https://javascript.ru/forum/dom-window/61254-dobavlenie-ehlementov-spiska.html)

innowed 10.02.2016 15:05

добавление элементов списка
 
http://javascript.ru/forum/dom-windo...ka-ciklom.html

<div id="wrap">
	<ul>
		<li></li>
		<li></li>
        </ul>
</div>
<button class="button" onClick="addData()">Добавить</button>

function addData(){ //добавление столбцов
	var ulCount=document.getElementById('wrap').getElementsByTagName('ul').length; //количество ul (столбцов)
	var liCount=document.getElementById('wrap').getElementsByTagName('li').length/ulCount;  //количество ячеек в одном столбце (ужас)
	document.getElementById('wrap');
	for (var i=0; i<1; i++)  {
		var ul =  document.createElement("ul");
		wrap.appendChild(ul);
		for (var k=0; k<liCount; k++)  {
			var li =  document.createElement("li");
			ul.appendChild(li);
		}	
	}
	wrap.appendChild(ul);
}

Добавлять столбцы у меня получается, а со строками не вышло
function addRows() {
	var ulCount=document.getElementById('wrap').getElementsByTagName('ul').length; //количество ul (столбцов)
	var liCount=document.getElementById('wrap').getElementsByTagName('li').length/ulCount;
	document.getElementById('wrap');
	for (var i=0; i<ulCount; i++)  {
		var ul =  document.createElement("ul");
		wrap.appendChild(ul);
		for (var k=0; k<1; k++)  {
			var li =  document.createElement("li");
			ul.appendChild(li);
		}	
	}
	wrap.appendChild(ul);
}

я понимаю, что проблема в том, что в 7 строке происходит присоединение ul ко wrap, в то время как я должен присоединить каждый следующий новый li к каждому следующему существующему ul, но как написать это в коде - никак не соображу

Dilettante_Pro 10.02.2016 16:11

innowed,
Вы, оказывается, завели новую тему, а в старой задали непонятный вопрос и бросили.

Не надо никаких Count - надо сформировать массив существующих ul и добавлять li во все ul или в любой - на выбор, например, во второй (естественно, если он существует - проверку я не стал прописывать)
var uls = document.getElementById('wrap').querySelectorAll('ul');
       var newli = document.createElement("li");
       li.innerText = "NewLi";
       uls[1].appendChild(li);


или для всех
var uls = document.getElementById('wrap').querySelectorAll('ul');
       var li;
       for (var i = 0; i < uls.length; i++) {
           li = document.createElement("li");
           li.innerText = "NewLi";
           uls[i].appendChild(li);
       }

innowed 11.02.2016 10:21

как лаконично, а я уже успел нагородить костылей)) Спасибо


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