Показать сообщение отдельно
  #3 (permalink)  
Старый 22.03.2022, 20:31
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Спасибо, но немного не то.
Таблиц очень много на странице, и порядок их меняется.
Примерно так выглядит таблица, которая нужна:
<table cellpadding=0 cellspacing=0 width="100%">
	<tr>
		<td width=60>
			<div class="cre_creature"  style="width:60px;">
				<img src="https://">
			</div>
		</td>

		<td width=60>
			<div class="cre_creature"  style="width:60px;">
				<img src="https://">
			</div>
		</td>
	</tr>
</table>


Я извиняюсь, не TD имеет уникальный класс, а DIV который в нём.

function show_army_leader(creature) // Лидерство армии
{
	var tr = creature.parentElement.parentElement // Колонка в таблице
		
	var list = tr.querySelectorAll('div[class^="cre_creature"]') // Получить список ячеек армии

	if(list.length > 1) // Если нужных ячеек больше 1, бываю и по одной а нужно когда их несколько
	{
		// Вставка нескольких ячеек в строку
		var td = document.createElement('td')
		td.innerHTML = "&nbsp;<b>13,983</b>"
		var ntd = tr.insertBefore(td, tr.childNodes[list.length]) // Вставить после последнего нужного td в таблице(их на самом деле больше)
			
		td = document.createElement('td')
		td.innerHTML = '<img height=24 widht=24 src="https://">'
		ntd = tr.insertBefore(td, ntd) // Вставить перед предыдущим td
			
		td = document.createElement('td')
		td.setAttribute("width", "10")
		td.innerHTML = "&nbsp;"
		tr.insertBefore(td, ntd) // Вставить перед предыдущим td
		
		return tr.childNodes[list.length] // Возвращает последний нужный td в таблице(тут не правильно, но это так, для наглядности)
	}
	return null
}
function main()
{
	var creature = document.querySelector('div[class^="cre_creature"]') // Найти первый объект, это ячейка с юнитами
	
	while(1)
	{
		if(creature == null) break
		
		creature = show_army_leader(creature).querySelector('div[class^="cre_creature"]') // После первого, искать дальше
                // Понятно, что querySelector ищет только потомков объекта, но это тоже, пока не доработано
	}
}


Я тут подумал, может быть я в корне неправильно выбрал алгоритм?
Может проще сначала получить массив всех нужных DIVов.
Потом берётся первый, у него ищется родитель, у родителя получаются опять все нужные DIVы, таким образом будет известно количество в первой таблице.
Ну и потом просто перебирать первый общий массив, брать следующий DIV производить те же операции, пока массив не кончится.

Я просто думал может я не знаю функций, которые позволяют искать с определённого места.
Ответить с цитированием