Loading...
Milko123 avatar Milko123 14 Точки

DOM-Lab, Problem 04 - Visited Sites, JS

Здравейте,

на задача https://judge.softuni.bg/Contests/Practice/Index/1801#3 с решение https://pastebin.com/DAtUKGUZ, моля някой да ми обясни каква функция имат командите на ред 10-11. Другия ми въпрос е относно регулярния израз на ред 13. Ако правилно разбирам той трябва да отдели всички букви и да ги замести с ' ' , но написан с ^ това не значи ли само в началото на изречението ". Имам предвид, че в случай на текст "visited 6 times", очаквам крайния резултат от replace да е "6 times" (изглежа греша, защото решението е работещо)?

Тагове:
1
JavaScript Fundamentals 13/09/2020 10:08:07
willystyle avatar willystyle 2472 Точки
Best Answer

ред 10 добавя евент лисънър за клик към съответния линк

ред 11 предпазва при клик да не редиректне линка към href от <a> но в случая са сложени href="#" и това е излишно (може да се махне без да чупи)

относно регекса e точно така, ще премахне всички букви от началото до първата срещната цифра:

"visited 1 times" ще го направи на "1 times"

използва тънкостта, че после парсва стинга с parseInt което взима цифри от стринга до където може и ги парсва, ако се ползваше Number или + щеше да връща NaN.
Така, че като значеш, че в стригна няма други значещи цифри, спокойно можеш да махнеш чавката, т.е. и с регекс 
.replace(/\D+/g, '') пак ще работи, даже вече може да се ползва Number за парс.

3
MapoBG avatar MapoBG 36 Точки

Здравейте,

Дали някой може да каже защо следния код за горе споменатата задача, гърми в Judge?

https://pastebin.com/pENfELPi

Дава грешка 

Unexpected error: clickableElements.forEach is not a function

Скрипта го пробвах на 5 различни браузъра(Brave, Opera, Edge, GChrome & IE) и на всички без IE (в11.508) работеше без проблем.....

0
01/10/2020 13:14:23
Axiomatik avatar Axiomatik 2422 Точки

One easy fix at line 4: [...clickableElements].forEach(a => a.addEventListener("click", addCount));

(QuerySelector returns Nodelist which is an array-like collection, but this collection can not employ array methods => reduce, foreach, map...)

Best,

0
MapoBG avatar MapoBG 36 Точки

Thank you for the comment, but it doesn't make much sense since the following quotes are from MDN:

https://developer.mozilla.org/en-US/docs/Web/API/NodeList

It's possible to loop over the items in a NodeList using a for loop:

Recent browsers also support iterator methods (forEach()) as well as entries()values(), and keys().

NodeList.forEach()

Executes a provided function once per NodeList element, passing the element as an argument to the function.

Best Regards, 

0
nickwork avatar nickwork 657 Точки

Judge имаше някакъв проблем с колекциите... направи го така let clickableElements = Array.from(document.querySelectorAll("a")); и тази грешка ще изчезне (Unexpected error: clickableElements.forEach is not a function)

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.