Javascript.RU

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

Не погу передать объект в IE с помощью this
Все доброго времени суток.

Тут на форуме нашел такую тему, в которой просят при клике увеличивать шрифт на сайте, я попробовал написать, написал, ну и уже как оч привычно, работает везде, кроме IE. Вот и пришел сюда за помощью. Укажи на мою ошибку, если такое возможно. Все скрипты ниже.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Увеличиваем шрифт</title>
    <style type="text/css">
        body {font-size: 120%;}
        ul.changeFont {list-style: none;}
        ul.changeFont li {
            float: left;
            margin: 0 0 0 5px;
        }
        ul.changeFont li a {
            text-decoration: none;
            color: #082b25;
        }
        ul.changeFont li a:active {color: #ec0024}
        #small {font-size: 11px;}
        #big{font-size: 15px;}
        #bigger{font-size: 19px;}
        .spacer {clear: both;}
        #text {font-size: 14px;}

        .text_14px {font-size: 14px !important;}
        .text_17px {font-size: 17px !important;}
        .text_20px {font-size: 20px !important;}
    </style>
</head>
<body>

<ul class="changeFont" id="changeFont">
    <li id="small"><a href="javascript:void(0);">A</a></li>
    <li id="big"><a href="javascript:void(0);">A</a></li>
    <li id="bigger"><a href="javascript:void(0);">A</a></li>
</ul>
<br class="spacer" />
<div id="text">
    Анонимные - доступны только с момента объявления. Синтаксис new Function используется редко, в основном для получения функции из текста, например, динамически загруженного с сервера в процессе выполнения скриптов.
</div>
</body>
</html>
Скрипт вставлял перед закрывающимся тегом body

<script type="text/javascript">
    // функция обрабатывающая клик
    font = function() {
        // получение элементов по которым будет кликать
        var  mainUl =  document.getElementById("changeFont").getElementsByTagName("LI");

        // узнаем по какому элементу кликнули
        for (j = 0; j < mainUl.length; j ++) {
            if (mainUl[j].nodeName == "LI") {
                var Ulchild = mainUl[j];
                
                // передачи идентификатора элемента по которому кликнули функции уведличивающей шрифт
                Ulchild.onclick = function() { changeFont(this.id) } // кстати вот этот элемент не могу передать в IE
            }
        }

        // загрузка куков
        cookieLoad();
    }

    // ф-ция  уведличивающая шрифт 
    changeFont = function(elem) {
        
        // этому элементу далее будет устанавливатся атрибут для куков **
        var change = document.getElementById("text");
        
        // устанавливаю атрибут для увеличения шрифта
        switch(elem) {
            case "small":
                change.setAttribute("class", "text_14px");
                break;
            case "big":
                change.setAttribute("class", "text_17px");
                break;
            case "bigger":
                change.setAttribute("class", "text_20px");
                break;
        }

        // **
        if (change.getAttribute("class")) {
            var cookie = change.getAttribute("class");
            cookieSet(cookie);
        }
    }

    // устанавливаю куки
    cookieSet = function(cookie) {
        if (navigator.cookieEnabled) {
            if (cookie != '') {
                cDate = new Date;
                cDate.setTime(cDate.getTime() + 3600000);
                rDate = cDate.toGMTString();
                document.cookie = "c_name=" + cookie + "; expires=" + rDate + ";";
            }
            cookieLoad();
        }
    }

    // загружаю куки
    cookieLoad = function() {
        if (navigator.cookieEnabled) {
            if (document.cookie != '') {
                docCook = document.cookie.split('; ');
                docCook[0] = docCook[0].split('=');
                cAttr = docCook[0][1];
                document.getElementById("text").setAttribute('class', cAttr);
            }
        }
    }

    // пытаюсь кросбраузерно запустить ф-цию font
    if (window.addEventListener) window.addEventListener("load", font, false);
    if (window.attachEvent) window.attachEvent("onload", font);
</script>


если вам не сложно укажите на ошибки. Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2010, 17:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

1. перекинь скрипт в <head>
2. if (mainUl[j].nodeName == "LI") в этом нет смысла после var mainUl = document.getElementById("changeFont").getElementsB yTagName("LI");
рабочий код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <title>Увеличиваем шрифт</title>
<style type="text/css">
        body {font-size: 120%;}
        ul.changeFont {list-style: none;}
        ul.changeFont li {
            float: left;
            margin: 0 0 0 5px;
        }
        ul.changeFont li a {
            text-decoration: none;
            color: #082b25;
        }
        ul.changeFont li a:active {color: #ec0024}
        #small {font-size: 11px;}
        #big{font-size: 15px;}
        #bigger{font-size: 19px;}
        .spacer {clear: both;}
        #text {font-size: 14px;}

        .text_14px {font-size: 14px !important;}
        .text_17px {font-size: 17px !important;}
        .text_20px {font-size: 20px !important;}
</style>
<script type="text/javascript">
   font = function () {
    var mainUl = document.getElementById("changeFont").getElementsByTagName("LI");
    for (j = 0; j < mainUl.length; j++) mainUl[j].onclick = function () {
        changeFont(this.id)
    };
    cookieLoad()
};
changeFont = function (elem) {
    var change = document.getElementById("text");
    switch (elem) {
    case "small":
        change.setAttribute("class", "text_14px");
        break;
    case "big":
        change.setAttribute("class", "text_17px");
        break;
    case "bigger":
        change.setAttribute("class", "text_20px");
        break
    }
    if (change.getAttribute("class")) {
        var cookie = change.getAttribute("class");
        cookieSet(cookie)
    }
};
cookieSet = function (cookie) {
    if (navigator.cookieEnabled) {
        if (cookie != "") {
            cDate = new Date;
            cDate.setTime(cDate.getTime() + 36E5);
            rDate = cDate.toGMTString();
            document.cookie = "c_name=" + cookie + "; expires=" + rDate + ";"
        }
        cookieLoad()
    }
};
cookieLoad = function () {
    if (navigator.cookieEnabled) if (document.cookie != "") {
        docCook = document.cookie.split("; ");
        docCook[0] = docCook[0].split("=");
        cAttr = docCook[0][1];
        document.getElementById("text").setAttribute("class", cAttr)
    }
};
if (window.addEventListener) window.addEventListener("load", font, false);
else if (window.attachEvent) window.attachEvent("onload", font);
</script>
</head>

<body>
  <ul class="changeFont" id="changeFont">
    <li id="small"><a href="javascript:void(0);">A</a></li>

    <li id="big"><a href="javascript:void(0);">A</a></li>

    <li id="bigger"><a href="javascript:void(0);">A</a></li>
  </ul><br class="spacer">

  <div id="text">
    Анонимные - доступны только с момента объявления. Синтаксис new Function используется редко, в
    основном для получения функции из текста, например, динамически загруженного с сервера в
    процессе выполнения скриптов.
  </div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2010, 18:34
Интересующийся
Отправить личное сообщение для kibal4iw Посмотреть профиль Найти все сообщения от kibal4iw
 
Регистрация: 14.05.2009
Сообщений: 10

Вечно у меня возникает проблема с местом подключения скрипта. То нужно подключить до того как дум выстроится, то после.

Спасибо огромное за быстрый ответ!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка страницы с помощью клавиш Mirgorod Events/DOM/Window 0 17.06.2010 22:39
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 01:35
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11