From 782d98be1703399c985329528dc4f9ee91b8ae77 Mon Sep 17 00:00:00 2001 From: Oleg Konoval Date: Tue, 3 Jul 2018 14:29:30 +0300 Subject: [PATCH] homework-10 --- js-core/homeworks/homework-10/index.html | 11 +++ js-core/homeworks/homework-10/src/main.js | 110 ++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 js-core/homeworks/homework-10/index.html create mode 100644 js-core/homeworks/homework-10/src/main.js diff --git a/js-core/homeworks/homework-10/index.html b/js-core/homeworks/homework-10/index.html new file mode 100644 index 0000000..34a91ec --- /dev/null +++ b/js-core/homeworks/homework-10/index.html @@ -0,0 +1,11 @@ + + + + + Home work 10 + + + + + + \ No newline at end of file diff --git a/js-core/homeworks/homework-10/src/main.js b/js-core/homeworks/homework-10/src/main.js new file mode 100644 index 0000000..2522165 --- /dev/null +++ b/js-core/homeworks/homework-10/src/main.js @@ -0,0 +1,110 @@ +//hw10 +console.log('***task1***'); + + +/* + * + * TASK 1 + * Создайте функцию которая будет превращать + * передаваемую строку в html тэг + * + * + * */ + +let $ = function (tag) { + return `<${tag}>` + +}; +let createBODY = $('body'); +let createDIV = $('div'); +console.log(createBODY); // +console.log(createDIV); //
+ + +console.log('***task2***'); +/* + * + * TASK 2 + * + * Создайте объект к которому можно будет применить любое число вызовов + // obj.method().method().method() + --------------- + * Передаваемое значение должно возвращаться в виде html тэгов (TASK 1) + * Передаваемые аргументы должны быть только в виде строки + * */ + +var ezjQuery2 = { + buffer: '', + add: function (tagName) { + this.buffer += `<${tagName}>`; + console.log(this.buffer); + return this; + } +}; +ezjQuery2 + .add('body') // + .add('div') //
+ .add('h1'); //

+ + +console.log('***task3***'); +/* + * + * TASK 3 + * Доработйте метод add чтобы на каждом вызове следующий + * тэг помещался внутри предыдущего ! + --- + * И добавьте объекту ezjQuery метод render, который будет возвращать + * сгенерированную строку + ----- + * Методу add - второй параметр, который будет размещать + * информацию внутри тэга + * + */ + +// example +var ezjQuery = { + buffer: '', + bufferCloseTags: [], + add: function (tagName, content) { + if (content === undefined) { + content = ''; + } + // this.buffer += `<${tagName}>${content}`; + this.buffer += `<${tagName}>${content}`; + this.bufferCloseTags.push(tagName); + //console.log(this.bufferCloseTags); + return this; + }, + render: function () { + let bufferCopy = this.buffer; + let closeTagsStr = ''; + + this.bufferCloseTags.reverse(); + this.bufferCloseTags.forEach(function (value) { + closeTagsStr += `` + + }); + + this.buffer = ''; + this.bufferCloseTags = []; + + bufferCopy += closeTagsStr; + + return bufferCopy; + } +}; +var helloList = ezjQuery + .add('body') // + .add('div') //
+ .add('ul') //
+ .add('li', 'Hello') //
+ .render(); +console.log(helloList); //
+// Обратите внимание, что после вызова render создание строки началось сначала + +var bodyDiv = ezjQuery + .add('body') // + .add('div') //
+ .render(); +console.log(bodyDiv); //
\ No newline at end of file