Професионална програма
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 2280 Точки
Best Answer

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

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

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

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

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

3
MapoBG avatar MapoBG 29 Точки

Здравейте,

Дали някой може да каже защо следния код за горе споменатата задача, гърми в 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 433 Точки

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 29 Точки

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 624 Точки

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

1