Dr_Elvis
@Dr_Elvis
В гугле забанен

Почему «исчезает» DOM нода?

Есть функция которая строит на странице основу, добавляя SVG и не только элементы на страницу.
примерный код:
function initdivcart(){
	let tdformap = document.querySelector('body > table > tbody > tr:nth-child(1) > td:nth-child(3)');
	let divcart = document.createElement('div');
	divcart.setAttribute('id', 'divcart');
	let cart = document.createElementNS(svgNS, 'svg');
	cart.setAttributeNS(null, 'id', 'cart');
	let glabwall = document.createElementNS(svgNS, 'g');
	glabwall.setAttributeNS(null, 'id', 'labwall');
	let g = document.createElementNS(svgNS, 'g');
	g.setAttributeNS(null, 'id', 'lab');

	cart.append(g);
	cart.append(glabwall);
	divcart.append(cart);
	tdformap.append(divcart);
}

а так же вытаскивание некой информации из IndexedDB(суть не в данных всё равно):
function dbget(table, ind, key) {
	return new Promise((resolve) => {
	  let openRequest = indexedDB.open('FV', 6);
		openRequest.onsuccess = function() {
			let db = openRequest.result;
			let transaction = db.transaction(table, 'readonly');
			let labs = transaction.objectStore(table);
			let index = labs.index(ind);
			let request = index.getAll(key);
			request.onsuccess = function() {
				let res = request.result;
				db.close();
				resolve(res);
			};
		};
	});
}

далее есть условие, если нет элемента с id = divcart, то тогда произвести инициализацию
if(!document.getElementById('divcart')){
	console.log('1'+document.getElementById('labwall'));
	initdivcart();
	console.log('2'+document.getElementById('labwall'));
	dbget('labs', 'lablvlID', lablvlID).then(resthis => {
		for(let xxlab of resthis){
			console.log('3'+document.getElementById('labwall'));
			labwall(xxlab);
			console.log('4'+document.getElementById('labwall'));
		}
		itemonlab(lab);
	});
}

Заметили я расставил консольлоги? Так вот что мне выводится в консоль:
1null
2[object SVGGElement]
3null
Uncaught (in promise) TypeError: Cannot read property 'append' of null

1 - это понятно, еще не было инициализации и такого элемента нет.
2 - элемент появился
3 - элемент исчез по какой то причине. Из-за того что в дальнейшей функции "labwall" у меня как раз используется SVG элемент с id "labwall" у меня крашится с ошибкой "Cannot read property 'append' of null".
Вот я и не пойму, почему на "этапе №3" у меня пропадает элемент?
Если что-то не понятно - задавайте вопросы, распишу подробнее.
  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы