Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2012, 16:03
Новичок на форуме
Отправить личное сообщение для assert Посмотреть профиль Найти все сообщения от assert
 
Регистрация: 15.09.2012
Сообщений: 5

свой JS фреймворк с блэкджеком. заминочка.
итак решил написать свой JS фреймворк. прошу избавить меня от ответов на вопросы "зачем? ведь есть же JQuery/prototype/.." и тд. если вам очень очень хочется спросить это то считайте я решил досконально изучить нативный JS.. теперь к делу.написал несколько методов и тут возникла Заминочка: не могу понять почему не работает метод css. в связи с этим просьба помочь. что исправить в нем? вроде метод проще некуда, а мучаюсь вот с ним.
исходный код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"  lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<style type="text/css">
.defaultstyle{
font:normal 18pt arial;
text-decoration:none;
color: green; /* Цвет текста */
font-weight: bold; /* Жирное начертание */
}
.newstyle{
font:italic 14pt arial;
text-decoration: underline;
color: red;
}
</style>
<body>
<div id="test" class="defaultstyle" onmouseover="aa()">
привет
    <ul>
        <li>a</li>
        <li>b</li>
    </ul>
</div>
<script>
// функция проверяет является ли параметр строкой
function isstr(param) {
    return typeof(param) == 'string';
}

function $(param) {
    var obj = isstr(param) ? document.getElementById(param) : param;
    obj.child = function(tagName) {
        return this.getElementsByTagName(tagName);
    }
    obj.append = function(param) {
        return this.appendChild(isstr(param) ? document.createElement(param) : param);
    }
    obj.parent = function() {
        return this.parentNode;
    }
// вот собственно сам метод css на вход принимает имя нового класса //css который нужно применить вместо старого
    obj.css = function(classn) {
	this.className = "classn";
	//console.log("тут работает");
	return this;
	}
     obj.empty = function() {
        while(this.firstChild) this.removeChild(this.firstChild);
        return this;
    }
    return obj;
}
//функция выполняемая при наведении мыши на объект
function aa(){
$('test').css("newstyle");
}
</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2012, 16:26
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

работает, но когда вы запускаете страницу и опускаете курсор -вы автоматом делаете овер на контейнеры-поскольку они растянуты на всю страницу и поджаты к верху страницы.
вопрос -вы хоть понимаете что идя таким образом -вы память браузера выжрете? у вас для каждого вызова своя цепочка видимостей(глобальный объект,объект активации, объект замыкания)-какая не не будет уничтожаться поскольку у вас замыкание?

Последний раз редактировалось dmitriymar, 15.09.2012 в 16:32.
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2012, 18:11
Новичок на форуме
Отправить личное сообщение для assert Посмотреть профиль Найти все сообщения от assert
 
Регистрация: 15.09.2012
Сообщений: 5

Цитата:
вопрос -вы хоть понимаете что идя таким образом -вы память браузера выжрете? у вас для каждого вызова своя цепочка видимостей(глобальный объект,объект активации, объект замыкания)-какая не не будет уничтожаться поскольку у вас замыкание?
про память браузера, про то что желательно кеширование сделать знаю но цель сейчас сделать просто так чтобы просто хоть как нибудь работало. я же пока не планирую использовать его в реальном проекте. просто надо осконально изучить JS

Цитата:
работает, но когда вы запускаете страницу и опускаете курсор -вы автоматом делаете овер на контейнеры-поскольку они растянуты на всю страницу и поджаты к верху страницы.
я это понимаю. но когда я делаю овер цвет должен поменяться с зеленого на красный. а у меня он меняется с зеленого на стандартный черный. может я чего то не понимаю или делаю не так?
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2012, 18:16
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

assert,

45 строка должна быть не
this.className = "classn";

а
this.className = classn;
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2012, 18:19
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

P.S. удачи в учении
Ответить с цитированием
  #6 (permalink)  
Старый 15.09.2012, 18:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от assert
просто надо осконально изучить JS
эх ... чем дальше в лес, тем больше понимаешь, что надо учить не JS, а способы проектирования \ всякие паттерны, алгоритмы.

Что-то я приуныл. Удачи в изучении!
Ответить с цитированием
  #7 (permalink)  
Старый 15.09.2012, 18:44
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

это не фрейморк, это конструктор

Сообщение от melky
эх ... чем дальше в лес, тем больше понимаешь, что надо учить не JS, а способы проектирования \ всякие паттерны, алгоритмы.
язык надо знать. Но, знание языка само по себе без представления о том, как выстраивать алгоритмы, бесполезно.

ну, как-то так )
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 15.09.2012, 18:57
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от assert
про то что желательно кеширование сделать
оно у вас есть и так
Сообщение от assert
var obj = isstr(param) ? document.getElementById(param) : param;
и эта строка одновременно и ваша проблема.+ дальше не кросбраузерно.

Последний раз редактировалось dmitriymar, 15.09.2012 в 19:01.
Ответить с цитированием
  #9 (permalink)  
Старый 15.09.2012, 20:13
Новичок на форуме
Отправить личное сообщение для assert Посмотреть профиль Найти все сообщения от assert
 
Регистрация: 15.09.2012
Сообщений: 5

Цитата:
это не фрейморк, это конструктор
эмм что то я не уловил. а в чем разница? и как написать фреймворк?
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2012, 18:59
Новичок на форуме
Отправить личное сообщение для assert Посмотреть профиль Найти все сообщения от assert
 
Регистрация: 15.09.2012
Сообщений: 5

по ходу написания возник еще вопрос:
как проверить наличие css класса у элемента? я хочу реализовать метод аналогичный hasClass() в jQuery
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Какой фреймворк выбрать для JS админки ? sir_nuf_nuf Библиотеки/Тулкиты/Фреймворки 3 03.06.2012 00:26
RPG JS Фреймворк nyols Оффтопик 0 24.05.2012 01:20
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28