Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Табы
 
 автор: sanchescom   (28.01.2010 в 14:07)   письмо автору
 
 


<script type="text/javascript" language="javascript">
function navAllInactive() {
    var oNav = document.getElementById('tabs');
     var oLis = oNav.getElementsByTagName('DIV');
 
     for (i = 0; i < oLis.length; i++) {
        var num = i + 1;
         oLis[i].className = 'tab' + num;
     }
}
 
function hideAllData() {
     var oData = document.getElementById('menu_block');
     var oDivs = oData.getElementsByTagName('UL');
 
     for (i = 0; i < oDivs.length; i++) {
         oDivs[i].style.display = 'none';
     }
}
 
function doShow(o, pageId) {
     hideAllData();
     navAllInactive();
     switch(pageId) {
        case 'one':
            nameClass = 'tab1_on';
        break; 
            case 'two':
            nameClass = 'tab2_on';
        break;
            case 'three':
            nameClass = 'tab3_on';
        break;
            case 'fore':
            nameClass = 'tab4_on';
        break;
    }
     o.className = nameClass;
     oData = document.getElementById(pageId);
     oData.style.display = 'block';
     return false;
}
</script>

Почему вся эта прелесть не работает в IE, вернее она работает вот только не меняет классы кнопок?

  Ответить  
 
 автор: sl1p   (28.01.2010 в 14:20)   письмо автору
 
   для: sanchescom   (28.01.2010 в 14:07)
 

o.setAttribute('class', nameClass);

  Ответить  
 
 автор: sanchescom   (28.01.2010 в 15:06)   письмо автору
 
   для: sl1p   (28.01.2010 в 14:20)
 

не помогло!

  Ответить  
 
 автор: sl1p   (28.01.2010 в 15:08)   письмо автору
 
   для: sanchescom   (28.01.2010 в 15:06)
 

в цикле тоже заменили?

  Ответить  
 
 автор: sanchescom   (28.01.2010 в 15:11)   письмо автору
 
   для: sl1p   (28.01.2010 в 15:08)
 

Ага.
     for (i = 0; i < oLis.length; i++) {
        var num = i + 1;
         Name = 'tab' + num;
        oLis[i].setAttribute('class', Name);
     }

  Ответить  
 
 автор: АЯ   (28.01.2010 в 15:12)   письмо автору
 
   для: sanchescom   (28.01.2010 в 14:07)
 

Что вы передаете функции doShow () в качестве параметров?

Дайте кусочек кода
onчего-то="doShow ('первый_параметр', 'второй_параметр')"
Соответственно, если параметры - какие-то переменные, то дайте их значения.

Первый ваш параметр должен быть ОБЪЕКТОМ (каким-то тегом), второй - СТРОКОЙ (в кавычках).

  Ответить  
 
 автор: sanchescom   (28.01.2010 в 15:16)   письмо автору
 
   для: АЯ   (28.01.2010 в 15:12)
 

<!--TOP MENU-->
<div id="menu_bg">
    <div id="tabs">
        <div class="tab1_on" onclick="javascript:doShow(this, 'one');"><a href="#">Авто</a></div>
        <div class="tab2" onclick="javascript:doShow(this, 'two');"><a href="#">Новости</a></div>
        <div class="tab3" onclick="javascript:doShow(this, 'three');"><a href="#">Статьи</a></div>
        <div class="tab4" onclick="javascript:doShow(this, 'fore');"><a href="#">Общение</a></div>
        <div class="clear"></div>
    </div>
</div>
<!--#TOP MENU-->

<!--MENU-->    
    <div id="main_menu">
        <div id="m_left">&nbsp;</div>
        <div id="menu_block">
            <ul id="one" style="display:block;">
                <li><a href="">АвтоСтоянки</a></li>
                <li><a href="">АвтоСалоны</a></li>
                <li><a href="">АвтоЗапчасти</a></li>
                <li><a href="">АвтоСервисы</a></li>
                <li><a href="">АвтоМойки</a></li>
                <li><a href="">Авто АЗС</a></li>
                <li><a href="">АвтоПеревозки</a></li>
            </ul>
        </div>
        <div id="m_right">&nbsp;</div>
    </div>
<!--#MENU-->

  Ответить  
 
 автор: АЯ   (28.01.2010 в 15:32)   письмо автору
 
   для: sanchescom   (28.01.2010 в 15:16)
 

Во-первых, во всех div'ах внутри <div id="tabs"> уберите протокол javascript:
И вообще НИКОГДА его не используйте нигде, кроме атрибута HREF тега <A>

Во-вторых, во всех ссылках (в тегах <A>) внутри <div id="tabs"> добавьте onclick="return false"

В-третьих, классы должны быть у вас прописаны ТАК:
<style>
.tab1    a {} 
.tab1_on a {}
.tab2    a {} 
.tab2_on a {}

/* и так далее - именно для тегов <A> внутри div'ов с указанным классом */
</style>

Когда всё это реализуете, то ваш исходный код (где ещё нет бессмысленного использования метода setAttribute) будет работать в MSIE.

  Ответить  
 
 автор: sanchescom   (28.01.2010 в 17:19)   письмо автору
 
   для: АЯ   (28.01.2010 в 15:32)
 

Ну в общем сделал, но IE опять шлет в жжж. Что пропустил?

<style type="text/css">
.tabs { cursor:pointer; }
.tab1 a { background-image:url(images/tab_off.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:50;  position:relative;  }
.tab1_on a { background-image:url(images/tab_on.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:50; position:relative; }
.tab2 a { background-image:url(images/tab_off.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:40;  position:relative; margin-left:-12px; }
.tab2_on a { background-image:url(images/tab_on.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:50; position:relative; margin-left:-12px; }
.tab3 a { background-image:url(images/tab_off.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:30;  position:relative; margin-left:-12px; }
.tab3_on a { background-image:url(images/tab_on.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:50; position:relative; margin-left:-12px; }
.tab4 a { background-image:url(images/tab_off.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:20;  position:relative; margin-left:-12px; }
.tab4_on a { background-image:url(images/tab_on.png); background-repeat:no-repeat; width:99px; height:22px; float:left; z-index:50; position:relative; margin-left:-12px; }
</style>
<script type="text/javascript" language="javascript">
function navAllInactive() {
    var oNav = document.getElementById('tabs');
     var oLis = oNav.getElementsByTagName('DIV');
 
     for (i = 0; i < oLis.length; i++) {
        var num = i + 1;
        oLis[i].className = 'tab' + num;
     }
}
 
function hideAllData() {
     var oData = document.getElementById('menu_block');
     var oDivs = oData.getElementsByTagName('UL');
 
     for (i = 0; i < oDivs.length; i++) {
         oDivs[i].style.display = 'none';
     }
}
 
function doShow(o, pageId) {
     hideAllData();
     navAllInactive();
     switch(pageId) {
        case 'one':
            nameClass = 'tab1_on';
        break; 
            case 'two':
            nameClass = 'tab2_on';
        break;
            case 'three':
            nameClass = 'tab3_on';
        break;
            case 'fore':
            nameClass = 'tab4_on';
        break;
    }
     o.className = nameClass;
    alert(o.className);
     oData = document.getElementById(pageId);
     oData.style.display = 'block';
     return false;
}
</script>
<!--HEADER-->
<div id="header_bg">

    <div id="header">
        <div id="logo"><a href=""><img src="images/logo.jpg" width="258" height="67" alt="" /></a></div>
        <div id="top_banner">&nbsp;</div>
        <div id="top_video">&nbsp;</div>
    </div>    
</div>
<!--#HEADER-->

<!--TOP MENU-->
<div id="menu_bg">
    <div id="tabs">
        <div class="tab1" onclick="doShow(this, 'one');"><a href="#" onclick="return false;">Авто</a></div>
        <div class="tab2" onclick="doShow(this, 'two');"><a href="#" onclick="return false;">Новости</a></div>
        <div class="tab3" onclick="doShow(this, 'three');"><a href="#" onclick="return false;">Статьи</a></div>
        <div class="tab4" onclick="doShow(this, 'fore');"><a href="#" onclick="return false;">Общение</a></div>
        <div class="clear"></div>
    </div>
</div>
<!--#TOP MENU-->

<!--MENU-->    
        <div id="menu_block">
            <ul id="one" style="display:block;">
                <li><a href="">АвтоСтоянки2</a></li>
                <li><a href="">АвтоСалоны2</a></li>
                <li><a href="">АвтоЗапчасти2</a></li>
                <li><a href="">АвтоСервисы2</a></li>
                <li><a href="">АвтоМойки2</a></li>
                <li><a href="">Авто АЗС2</a></li>
                <li><a href="">АвтоПеревозки2</a></li>
            </ul>
            <ul id="two" style="display:none;">
                <li><a href="">АвтоСтоянки2</a></li>
                <li><a href="">АвтоСалоны2</a></li>
                <li><a href="">АвтоЗапчасти2</a></li>
                <li><a href="">АвтоСервисы2</a></li>
                <li><a href="">АвтоМойки2</a></li>
                <li><a href="">Авто АЗС2</a></li>
                <li><a href="">АвтоПеревозки2</a></li>
            </ul>
        </div>
        <div id="m_right">&nbsp;</div>
<!--#MENU-->

  Ответить  
 
 автор: АЯ   (28.01.2010 в 19:02)   письмо автору
 
   для: sanchescom   (28.01.2010 в 17:19)
 

У меня ВСЁ РАБОТАЕТ. Удостоверьтесь:
<style>
.tab1    a, .tab2    a, .tab3    a, .tab4    a {color: aqua}
.tab1_on a, .tab2_on a, .tab3_on a, .tab4_on a {color: gray}
</style>

<script>
//Ваш скрипт
</script>

<div id="menu_bg"><div id="tabs">
 <div class="tab1_on" onclick="doShow (this, 'one')"  ><a href="#" onclick="return false">one</a  ></div>
 <div class="tab2"    onclick="doShow (this, 'two')"  ><a href="#" onclick="return false">two</a  ></div>
 <div class="tab3"    onclick="doShow (this, 'three')"><a href="#" onclick="return false">three</a></div>
 <div class="tab4"    onclick="doShow (this, 'fore')" ><a href="#" onclick="return false">fore</a ></div>
</div></div>

<div id="menu_block">
 <ul id="one"                         ><li><a href="">1</a   ></ul>
 <ul id="two"   style="display: none" ><li><a href="">22</a  ></ul>
 <ul id="three" style="display: none;"><li><a href="">333</a ></ul>
 <ul id="fore"  style="display: none;"><li><a href="">4444</a></ul>
</div>

  Ответить  
 
 автор: sanchescom   (29.01.2010 в 11:22)   письмо автору
 
   для: АЯ   (28.01.2010 в 19:02)
 

Спасибо большое за помощь, действительно работает. Разобрался почему не пашет у меня!
Дело в том что у меня в качестве картинок стоят pngшки, для ie подключаю fixpng.js. Вот из-за него ничего и не работает. Стоит его отключить и все сразу заработало.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования