При клике на другой элемент данные старого удаляются и записываются новые.

184
30 марта 2017, 18:43

Ситуация следующая: выгружаю список с сервера. у этого списка есть еще связи, которые мне при клике на элемент необходимо показать. То есть, при клике на элемент создается <p> и там записывается информация. Как при клике на другой элемент удалить информацию, которая писалась предыдущим и написать свою?

Хожу вокруг да около ответа, но все никак не могу додуматься.

function showCompanies(companies) { 
	for( var i = 0; i < companies.list.length; i++ ) { 
		var li = companiesList.appendChild(document.createElement('li')); 
		li.innerHTML = companies.list[i].name; 
 
		//show partners 
		//track 'li' number which has been clicked and show it partners 
		li.onclick = function(a) { 
			var a = a || window.event, 
			a = a.target || a.srcElement, 
			b = a.parentNode; 
			if (a.nodeName.toLowerCase() == "li" && b.nodeName.toLowerCase() == "ul") { 
				for (var current = 0, a = a.previousSibling; a && a != b;){ 
					a.nodeName.toLowerCase() == "li" && current++, a = a.previousSibling; 
				} 
			} 
			for (var j = 0; j < companies.list[current].partners.length; j++) { 
				document.getElementById('companyPartners').style.display = 'block'; 
				var partnersBlock = document.getElementById('partners'); 
				var p = partnersBlock.appendChild(document.createElement('p')); 
				p.innerHTML = companies.list[current].partners[j].name; 
			} 
		} 
 
	}; 
}

Итак, что тут происходит...я перетягиваю из файла компании в список, далее при клике отслеживаю порядковый номер в массиве, чтоб по нему узнать данные о партнерах этой компании, я их узнаю и вывожу на экран. Осталось теперь при клике на другой элемент удалить предыдущих партнеров и показать новых.

Answer 1

Создавайте элемент вместе с id, тогда при надобности можно найти элемент с конкретным id и заменить текст внутри:

document.getElementById("elementid").innerHTML="new data"

jQuery:

$("#elementid").html("new data")

Удалить элемент по ID:

var el = document.getElementById('elementid');
el.parentNode.removeChild(el);
READ ALSO
Сверстать адаптивный дизайн - макет 1920х1080

Сверстать адаптивный дизайн - макет 1920х1080

Мне дали макет в форматеpsd размером в пикселях 1920Х1080

157
Как установить в input неудаляемый текст?

Как установить в input неудаляемый текст?

Проще всего обьяснить суть задачи на скрине:

552
Слайдер в моб.версии

Слайдер в моб.версии

При верстке использовал skd-slider, работает хорошо, но когда открываю сайт на смартфоне, не могу нажимая на слайдер перемещаться по сайту, другие...

191