@Mosapi

Почему не находится элемент dom по параметру из массива?

Добрый день пишу расширение для chrome.
И все работает прекрасно, кроме одной функции.
Content-script.js:
chrome.storage.local.get(['keys'], function(check){
mass = check.keys;
//mass = ['2443330','7579444','9581333','2609336','8612108','1617782','2600085'];
	var index;
	for(index = 0; index < mass.length; ++index){
		//console.log(mass[index]);
		let urlx = document.querySelectorAll('a[href$="'+mass[index]+'"]');//должна выбираться ссылка с атрибутом href заканчивающаяся на цифру из массива.
                console.log(urlx);
		for(var i = 0; i < urlx.length; i++) {
		var tb_str = urlx[i].parentElement.previousSibling;
		var tr_str = urlx[i].parentElement.parentElement;
		var chislo = tb_str.innerHTML; //92600863
		tr_str.querySelector('a[name="table_checkbox_'+chislo+'"]').checked = true;
		}
	}
});

Почему-то не срабатывает поиск элемента:
let urlx = document.querySelectorAll('a[href$="'+mass[index]+'"]');
и соответственно все дальнейшие манипуляции над найденными объектами. В консоли вижу такое [ ], но почему не понимаю?
Сделал примерчик здесь -> https://jsfiddle.net/3d40tym2/
  • Вопрос задан
  • 84 просмотра
Решения вопроса 2
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
потому что check.keys уже массив? и ты кладешь массив в массив mass = [check.keys]?

пробуй mass = check.keys
Ответ написан
@Mosapi Автор вопроса
После долгих посиделок все таки справился с проблемой. Оставлю ответ, вдруг(мало вероятно) но все таки кому-то поможет.
Проблема оказалась не в той строке, где предполагалось изначально, а здесь:
var tb_str1 = urlx[i].parentElement.previousSibling;

Если быть точным то вот в этой фигулине: .previousSibling
функция все никак не хотела находить левостоящего соседа. Почему? Яне знаю.
Решено так:
var tr_str = urlx[i].parentElement.parentElement;
var tb_str = urlx[i].parentElement.previousSibling;
var chislo = tb_str.innerHTML;

заменил на:
var tr_str = urlx[i].parentElement.parentElement;
var tb2_td=tr_str.querySelector('td:nth-child(2n)');
var chislo = tb2_td.innerHTML;

И все заработало.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы