123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // Required Task 1
- // Завершите код функции typeMessage так, чтобы на страницу выводился один символ в секунду
- function typeMessage ( message, velocity ) {
- var container = document.getElementById ( "demo" ) ?
- document.getElementById ( "demo" ) :
- document.body.appendChild (
- document.createElement ( "h3" )
- )
- container.style = `color: magenta;`
- var index = 0
- return (function() {
- var timerId = setTimeout(function showMessage() {
- setTimeout(showMessage, velocity * 1000);
- index++;
- if(index > message.length)
- {null} else
- {
- container.innerText = message.substring(0, index);
- }
- });
- })()
- }
- typeMessage ( `Welcome to the hell`, 1 )
- // Additionally Task 2
- // Напилите код методов setUserPresent, showPresent и showAbsent
- // var users = (
- // function ( list ) {
- // var users = []
- // for ( var user of list )
- // users.push ({
- // name: user,
- // present: false
- // })
- // return {
- // setUserPresent ( userName, present ) {
- // ...
- // },
- // showPresent () {
- // ...
- // },
- // showAbsent () {
- // ...
- // }
- // }
- // }
- // )( [ "Иван", "Дмитрий", "Степан", "Михаил" ] )
- // users.showAbsent()
- // После запуска кода результат в консоли должен быть таким:
- // Иван
- // Дмитрий
- // Степан
- // Михаил
- // а после выполнения кода:
- // users.setUserPresent( "Иван", "+" )
- // users.setUserPresent( "Михаил", "присутствовал" )
- // users.setUserPresent( "Степан", true )
- // users.showPresent()
- // результат в консоли должен быть таким:
- // Иван
- // Степан
- // Михаил
- var users = (
- function ( list ) {
- var users = []
- for ( var user of list )
- users.push ({
- name: user,
- present: false
- })
- return {
- setUserPresent ( userName, present ) {
- for (var user of users) {
- userName === user.name && (present === '+' || "присутствовал" || present === true) ? user.present = true : null;
- }
- },
- showPresent () {
- for (var user of users) {
- user.present === true ?console.log(user.name) : null;
- }
- },
- showAbsent () {
- for (var user of users) {
- user.present === false ? console.log(user.name) : null;
- }
- }
- }
- }
- )( [ "Иван", "Дмитрий", "Степан", "Михаил" ] )
- users.showAbsent()
- users.setUserPresent( "Иван", "+" )
- users.setUserPresent( "Михаил", "присутствовал" )
- users.setUserPresent( "Степан", true )
- users.showPresent()
- // Additionally Task 3
- // Допилите код функции changeClass, которая парсит все стили страницы в поисках заданного класса, а затем меняет атрибуты стиля этого класса
- // let changeClass = ( classname, styleString ) => (
- // ...
- // ).length > 0 ? console.log ( "found" ) :
- // document.head.appendChild (
- // document.createElement ( "style" )
- // ).textContent = `.${classname} {${styleString}}`
- // После вызова функции:
- // changeClass ( "second-level-menu", "background-color: red!important;" )
- // в консоли страницы, где есть элементы с классом second-level-menu, у всех элементов этого класса цвет фона должен измениться на красный
- let changeClass = ( classname, styleString ) => ( Array.from ( document.styleSheets )
- .filter ( sheet => !sheet.href )
- .map (
- sheet => Array.from ( sheet.cssRules )
- .filter ( rule => rule.selectorText === `.{classname}` )
- )
- .filter ( item => item.length > 0 )
- .map ( item => item[0].cssText.split ("}")
- .join ( `${styleString}}` )
- )
- ).length > 0 ? console.log ( "found" ) :
- document.head.appendChild (
- document.createElement ( "style" )
- ).textContent = `.${classname} {${styleString}}`
- changeClass ( "second-level-menu", "background-color: red!important;" )
|