• Как перебрать дочерние элементы внутри цикла forEach?

    @jumpUp22
    Вам правильно выше посоветовали. Начал придумывать код с forEach и незаметно сам пришёл к варианту автора выше с while.

    Всё таки приложу полностью код:

    const btn = document.querySelectorAll(".parent__btn");
    const parent = document.querySelectorAll(".parent");
    
    const btnsArray = Array.from(btn);   // Превращаем коллекцию типа NodeList в массив
     
     btnsArray.forEach(b => {   // устанавливаем обработчики на кнопки
    	b.addEventListener('click', listener);
     });
    
    function listener(event) {
    	let el = event.target;
    	
    	while (el.className != 'parent') {   // код автора предыдущего комментария
    		el = el.parentNode;
    	}
    	
    	if (el) {
               const parent = el.querySelector('.parent__text');
               const btnText = parent.textContent;
               console.log(btnText);   // текст нужной ноды
    	}
     }


    Здесь forEach используется только для установки обработчиков на кнопках.
    Конечно, можно сделать и поиск нужного элемента через forEach (и filter), возможно, как то ещё. Но работать будет быстрее первый вариант с while.
    Ответ написан
  • Как добавить свой собственный метод в массив?

    @jumpUp22
    Можно попробовать использовать прокси.
    Например:

    const target = {
    	cookies
    };
    
    const handler = {
    	get: function(target, domain) {
    		var domain_cookies = [];
    		for (var c = 0; c < target.length; c++) {
    			if (target[c]['domain'].includes(domain)) {
    				domain_cookies.push(target[c]['name'] + '=' + target[c]['value']);
    			}
    		}
    		return domain_cookies.join('; ');
    	}
    };
    
    const proxy = new Proxy(target, handler);
    console.log(proxy['somesite']);


    Примерно так.
    Ответ написан
    1 комментарий