[Homework] Advanced JS - Functions and function expressions - Problem{7} DOM Manipulation
Забелязах две грешки в условието на задачата и по-конкретно в sample кода. Поне засега са само две.
// Appends a list item to ul.birds-list
domModule.appendChild(liElement,".birds-list"); - тук реда на аргументите е сменен. liElement e детето, което трябва да се добави, т.е. трябва да се подаде второ.
// Adds a click event to all bird list items
domModule.addHandler("li.birds", 'click', function(){ alert("I'm a bird!") }); - доста чаках да закачи евенти на птичките, докато не смених li.birds на li.bird...
Реших проблема => parent[i].appendChild(childNode.cloneNode()); Обяснено е добре тук.
Аз доколкото разбрах условието само на един елемент трябва да се закачи, т.е. ползвах за тази функция querySelectior(). Но е доста полезно това, което си открил.
Аха, ами може и да имат впредвид само един елемент наистина. Аз се водих от това:
"If any selector is passed to the module, it should find (and manipulate) all elements the selector corresponds to ", т.е. в случая на всички <li>-та от DOM-a закачам <а> примерно. Така поне го разбирам аз.
да, и аз така го разбрах.
Доколкото разбирам условието, и element и child могат да бъдат както селектори, така и елементи. Затова аз първо проверявам дали са селектори и ако са, тогава извиквам querySelectorAll. Ако не са - е, тогава нещата са доста по-прости...
Да, проверката дали са елементи (ако не са значи са селектори) и аз я правя. Само в случая appendChild ползвам querySelector, навсякъде другаде съм с querySelectorAll, може да го сложа да е и в appendChild.
Явно и аз съм се сблъскал със същите проблеми, както повечето от вас на тази задача. В google обаче успях да намеря лесно решенията на всичките ми проблеми. И все пак тъпия IE не поддържа ":scope > "... Ето моето решение на тази задача:
07. DOMManipulation