Я написал небольшой фрагмент JS в консоли, чтобы пройти через рекомендуемые соединения в LinkedIn и, если текст содержит определенное слово, игнорировать эту карту, в противном случае нажмите кнопку закрытия 'X'.
ПервоначальноЯ написал это так:
const list = document.querySelector('.mn-pymk-list__cards');
const cards = list.querySelectorAll('.mn-pymk-list__card');
cards.forEach( (card, i) => {
setTimeout( ()=>{
let text = card.querySelector('.member-insights__count');
if( !text.textContent.includes('Sharon') || text === null ) {
card.querySelector('.pymk-card__close-btn').click();
} else {
card.style.background = 'green';
}
}, i * 1000 )
});
Однако, когда он запустился, он иногда выдавал ошибку (продолжая итерацию) с сообщением «Не удалось прочитать textContent of null».
Однако, когдаЯ написал такой код:
const list = document.querySelector('.mn-pymk-list__cards');
const cards = list.querySelectorAll('.mn-pymk-list__card');
cards.forEach( (card, i) => {
setTimeout( ()=>{
let text = card.querySelector('.member-insights__count');
if( text === null ) {
card.querySelector('.pymk-card__close-btn').click();
} else if (!text.textContent.includes('Sharon')) {
card.querySelector('.pymk-card__close-btn').click();
} else {
card.style.background = 'green';
}
}, i * 1000 )
});
Он работает абсолютно нормально и делает то, что я хочу.
ВОПРОС: Я не могу понять, почему первый вариант не работает,поскольку он кажется более кратким и теоретически должен делать то же самое?
Я подозреваю, что это как-то связано с тем, что в LinkedIn некоторые из предложенных контактов не имеют класса '.member-insights__count'и вместо этого иметь' .member-insights__info '.
Но это все равно должно привести к разрешению текста в ноль, верно?
Любое понимание было бы здорово!