свой 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>
|
работает, но когда вы запускаете страницу и опускаете курсор -вы автоматом делаете овер на контейнеры-поскольку они растянуты на всю страницу и поджаты к верху страницы.
вопрос -вы хоть понимаете что идя таким образом -вы память браузера выжрете? у вас для каждого вызова своя цепочка видимостей(глобальный объект,объект активации, объект замыкания)-какая не не будет уничтожаться поскольку у вас замыкание? |
Цитата:
Цитата:
|
assert,
:blink: :blink: 45 строка должна быть не this.className = "classn"; а this.className = classn; |
P.S. удачи в учении :)
|
Цитата:
Что-то я приуныл. Удачи в изучении! |
это не фрейморк, это конструктор :)
Цитата:
ну, как-то так ) |
Цитата:
Цитата:
|
Цитата:
|
по ходу написания возник еще вопрос:
как проверить наличие css класса у элемента? я хочу реализовать метод аналогичный hasClass() в jQuery |
все вопрос решен, если кому интересно:
obj.hasClass = function (){
if (!this.className) return false;
else return true;
}
|
| Часовой пояс GMT +3, время: 01:15. |