js-фреймворк, связывающий css классы и dom элементы
В общем дали такое тестовое задание - "Простой js-фреймворк, связывающий css классы и dom элементы
(приминение css стилей к dom элементам). Итоговая функциональность и интерфейсы на усмотрение". Не могу понять чего они хотят - CSS-классы с dom-элементами связываются с помощью атрибутув, которые прекрасно устанавливаются стандартными методами JS, без фреймворков. То же самое и с применением стилей к dom-элементам. У кого какие мысли ? |
мне кажется, что тебя просят написать несколько абстракций для работы с css классами и dom элементами
но... блина, это же 3 функции, ёмаё но так как сказано фреймворк, то эти 3 функции должны навязать свой стиль - например, как chain calls у jQuery или ООП у Mootools |
я не буду говорить про ui и angular
|
Danxil, короче дам наводку, сделай что-то типа
<div controller='Ctrl' class='open_{isOpen}'></div>
<script>
function Ctrl() {
this.isOpen = false
}
</script>
сделай короче что-то типа того, что мыл короче в атрибуте controller ты пишешь имя функции контроллера, а в атрибуте class ты можешь в {таких} тегах писать разные javascript выражения , которые выполняются with(инстанс_контроллера), и они туда будут подставляться, а при изменении перерисовываться. В данном случае у тебя class должен будет стать "open_false" так как значение false при привращении в строку превратится в строку "false" и подставится на место {тега}. Например напишешь class='my_class_{2+4}' у тебя в класс положется class='my_class_6' Пнятна задумка? |
Цитата:
|
Ну еще можешь вот так вот сделать, скорее всего он это и имел ввиду
function JQ( selector ) {
if (typeof selector === 'function') {
addEventListener( 'DOMContentLoaded', selector );
return;
}
if (!(this instanceof JQ)) {
return new JQ( selector )
}
this.length = 0;
try {
var elements = document.querySelectorAll( selector );
var elementsArr = elements ? Array.prototype.slice.call( elements ) : [];
Array.prototype.push.apply( this, elementsArr );
} catch (e) {
}
}
JQ.prototype.each = function( handler ) {
for (var i = 0; i < this.length; i++) {
var element = this[i];
var returns = handler.call( element, i );
if (returns === false) {
break;
}
}
return this;
};
JQ.prototype.css = function( props ) {
if (arguments.length === 2) {
var prop = props;
var value = arguments[1];
props = {};
props[prop] = value;
}
return this.each( function() {
var style = this.style;
for (var prop in props) if (props.hasOwnProperty( prop )) {
var value = props[prop];
style[prop] = value;
}
} );
};
// onload
JQ( function() {
JQ( 'div' ).css( 'backgroundColor', 'red' );
} );
на короче, кусок jquery типа, скажешь сам сделал |
Maxmaxmaximus7 Понятно что ты имеешь введу, но как по мне, это скорее связь css-классов с js-переменными, а не "связь css классов и dom элементов".
На просьбу уточнить функционал ответили так "Вы знакомы с jQuery, нужен небольшой фреймворк такого плана". Хз, может типа такого им отослать ...
function addClass(element, className)
{
if (!element || !className)
return;
var index, elementClassNames = [];
if (element.className)
elementClassNames = element.className.split(' ');
if ((index = getElementIndex(elementClassNames, className)) == -1)
{
elementClassNames.push(className);
element.className = elementClassNames.join(' ');
}
}
|
Тебе максимуc показал фреймворк плана jQuery.
|
а где лайки мои?
|
Цитата:
![]() |
Цитата:
|
Цитата:
|
Да это похоже яндекс ему задачу дал:)
Напишите свой небольшой js-фреймворк работы с css классами dom элементов. Итоговая функциональность и интерфейсы отдаются на ваше усмотрение. Мне такую же прислали. Первую задачу решил. Задача на сортировку с перегрузками памяти браузера. 5 дней решал:)))Решил пацаны. Решил!:))) |
| Часовой пояс GMT +3, время: 00:06. |