Exams - Solutions


2

Ето тук ще ъпдейтвам за всеки изпит, който успея да направя. Като искам да отбележа следното с което до сега се сблъсквам, for in и for of карат бг кодер да се държи тъпо :D демек 0т. let i const също....За сега това. Ето и изпитите до момента и също да отбележа да внимавате да гледате CSS-a че има големи подводни камъни не винаги .show и .hide са правилния вариант, нали за display = nonе е ясно но при jQuery често искат да добавиш или махнеш клас toogleClass() и addClass и RemoveClass работят перфе.Сигурно на изпита ще бъдат ок тея неща, ама....Аз мисля да не рискувам и ще си въртя нормални for(var i =0;...)Говоря за коагот например искаш да обхождаш нещо което с jQuery find(class) си намерил...Успех!

I. 16-August-2016-18:00: Exam-1 BGCoder: Click

II. 16-August-2016-MakeUP-Exam: Exam-2 BGCoder: Click Първата е бъгната в БгКодер.

III.6-August-2015-18:00: Еxam-3 BgCoder: Click Втората задача е бъгната в БгКодер...Авторското не дава пълен брой, моето дава 0, но пък даже съм добавил и допиълнителна функционалност да се цъкат по светлите, поленца и да препраща....Са ако някой открие що ми дава 0 екстра, ма кат цяло нема голям смисъл :D важното е че я направих, щото е доста интересна задачка!!!Имам доста копи пейст код щото ме домързя леко пък....И се счупваше като изнасях в функции.....

IV.Sample-Exam-1: Exam-4 BGCoder: Няма! Като цяло доста як изпит, имам още какво да му правя, няма бг кодер и  такива работи, което е успокоително, все още ми остава въпроса с втората задача защо има спейсче между title1 и title2 и как да го махна, спомням си че се сблъсках с тоя проблем по CSS и го бях разгадал ма....Сега дупка.




Отговори



1

Здравей, колега.

Докато решавах задачата, забелзах нещо, което видях и че при теб го има.

В момента, в който се търси в колекцията от имена на директории.

var findItems = $('.item-name'); - Тук създаваме Jquery колекция

var $item = $(findItems[i]); - Тук заради това, че се слага индекс на колекцията пак трябва да сложм $

или става,че  var $item = $($('.item-name')[i]) , което е странно!

Защо се получава, така че като вземем елемент от Jquery колекция, той не е Jquery елемент, а трябва да му слагаме $ за да го превърнем в такъв?

Аз ползвах var $item = findItems.eq[i]


от peter_85 (214 точки)


2
jQuery е просто обвивка, ти ако с jQuery селектираш елеменет той става с такава обвивка защото ти си му я сложил, но когато от jQuery съм взел списък с елементи и ги обхождам те по отделно нямат обвивка те са си нормални дом елементи, като цяло jQuery е просто обвивката на елемент, не съм сигурен сега коя е по добра практика но може и без да се налага да го кастваш към jQuery и просто да си ползваш смесено jQuery + нормални DOM операции.

от IliyaST (251 точки)

1

Предполагам, че на изпита няма да се отчитат точки ако се ползва смесено jQuery + нормални DOM операции.

Макар, че ако направим така, може и да мине :):

var domElement = document.getElementsByClassName("special")[0];

var $domElement = $(domElement);


от peter_85 (214 точки)



0

Привет, колеги,

Зациклих на първа задача (Autocomplete) от изпита на 16 август 2016, докарвам 85/100 в bgcoder (един тест куца), като 5-те локални тестове ми минават, в браузера уж всичко работи коректно. 

Това е линк към кода - github, условие на задачата и за по-удобно - DEMO.

Пробвах всякакви варианти да го счупя, не успях, попълвах инпут полето със спейсове, което се оказа ок, тъй като и с авторското решение на Цъки не е проблем да се добавя така в suggestions-list-а; повтарящи се suggestion-и се скипват и не се добавят, както си е по условие; при празно инпут поле нищо не се добавя; li-тата се скриват адекватно; при клик върху suggestion, текстът се прехвърля в инпут полето; case-insensitive е търсенето...не се сещам друго, а явно има. Ако някой има някакви предположения, ще съм мнооого благодарна да сподели :).

P.S. @IliyaST, понеже пробвах и с твоето решение, за да видя къде бъркам, забелязах, че при теб може да се добавят еднакви suggestion-и към списъка при клик върху Add-бутона, явно няма такъв тест (което е странно), но все пак отбелязвам, ако не си обърнал внимание.


от Daniela_Popova (1125 точки)


1
Предполагам, че не си си направила сравнението с toLowerCase(), но си дала грешен линк за кода и не мога да съм максимално полезен.  Ето ти моя код след часове дебъгване Линк

от Vlaev (105 точки)

0
Мерси, линкът е оправен, но не е това проблемът, както споменах по-горе, търсенето ми е case-insensitive, т.е. ползвала съм toLoweCase(). Ще прегледам и твоя код, може и да намеря някаква разлика :)

от Daniela_Popova (1125 точки)


0

Task 1 6 August 2015 13:30

Моля за помощ. При мене страницата работи както би трябвало, но бгкодер не се кефи и дава само 70/100. Някой има ли идеи кое не е както трябва?

function solve() { return function (selector, isCaseSensitive) { selector = selector.substring(1); isCaseSensitive = isCaseSensitive || false; var selection = document.getElementById(selector); selection.className = "items-control"; // ********** Adding elements part ********** var addControls = document.createElement("div"); addControls.className = 'add-controls'; var labelText = document.createElement("label"); labelText.innerHTML = "Enter text"; var inputText = document.createElement("input"); var addButton = document.createElement("button"); addButton.className = "button"; addButton.innerHTML = "Add"; addControls.appendChild(labelText); addControls.appendChild(inputText); addControls.appendChild(addButton); selection.appendChild(addControls); // ****************************************** // ********** Search elements part ********** var searchControls = document.createElement("div"); searchControls.className = 'search-controls'; var labelSearch = document.createElement("label"); labelSearch.innerHTML = "Search:"; var inputSearch = document.createElement("input"); searchControls.appendChild(labelSearch); searchControls.appendChild(inputSearch); selection.appendChild(searchControls); // ****************************************** // ********** Result elements part ********** var resultControls = document.createElement("div"); resultControls.className = 'result-controls'; var itemsList = document.createElement("div"); itemsList.className = "items-list"; resultControls.appendChild(itemsList); selection.appendChild(resultControls); // ****************************************** // ***************** Events ***************** addButton.addEventListener('click', function () { var newItem = document.createElement("div"); newItem.className = "list-item"; newItem.innerHTML = inputText.value; var xButton = document.createElement("button"); xButton.className = "button"; xButton.innerHTML = "X"; xButton.addEventListener('click', function (e) { e.target.parentNode.parentNode.removeChild(e.target.parentNode); }); newItem.appendChild(xButton); itemsList.appendChild(newItem); }); inputSearch.addEventListener("input", function () { var allListItems = document.getElementsByClassName("list-item"); for (var i = 0; i < allListItems.length; i += 1) { var currentItem = allListItems[i]; if (isCaseSensitive) { if (currentItem.innerHTML.indexOf(inputSearch.value) == -1) { currentItem.style.display = 'none'; } } else { if (currentItem.innerHTML.toLowerCase().indexOf(inputSearch.value.toLowerCase()) == -1) { currentItem.style.display = 'none'; } else { currentItem.style.display = ''; } } } }); // ****************************************** }; }




0
При мен първоначално даваше 50/100, въпреки че си работеше коректно. Ето линк където дава 100/100 за да си свериш и разбереш какво объркал или още не си направил. Предполагам ще ти е полезен.

от monsterEnergy (954 точки)