[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    научил) уникод рулит))
     
  2. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    Code:
    function act(e)
    {
      var aim = e.target || e.srcElement,
      blocks = document.getElementById('buttons').getElementsByTagName('img'),
      l = blocks.length,
      while(l--) blocks[l].className = 'normal';
       aim.className = 'active';

    когдато астрологер мне помог: скрпитик написал что клас меняло..

    так вот там тег имж. нада что у него атрибут
    Code:
    src="images/but.png"
    поменяло на
    Code:
    src="images/butActive.png"
    как дойти до этого атрибуто приблизительно вкурсе (фаербаг рулит) но дальше там строки штоле.
    штоб после 4 символа сконца дописать Актив
     
  3. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Code:
    .replace(/(\.\w+)$/, 'Active$1');
     
  4. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    Code:
    startList = function() {
          if (document.all&&document.getElementById) {
                navRoot = document.getElementById("nav");
                for (i=0; i<navRoot.childNodes.length; i++) {
                      node = navRoot.childNodes[i];
                      if (node.nodeName=="LI") {
                            node.onmouseover=function() {
                                  this.className+=" over";
                            }
                            node.onmouseout=function() {
                                  this.className=this.className.replace(" over", "");
                            }
                      }
                }
          }
    }
    window.onload=startList;
    Code:
     <ul id="nav">
                         <li class=""><a href="#">Home</a></li>
                         <li class=""><a href="#">About</a>
                             <ul>
                                 <li><a href="#">History</a></li>
                                 <li><a href="#">Team</a></li>
                                 <li><a href="#">Offices</a></li>
                             </ul>
      </ul>
    Ачо оно не работает :confused:
     
    #584 smOleg, 23 May 2008
    Last edited: 23 May 2008
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    1) Выражение Boolean(document.all) в браузерах FF2.0+, Safari, Opera 9.5 (build 9755+) возвращает ложь из-за маскировки этого объекта. (В приведённом примере document.all не используется, но зачем-то проверяется. Копипаст?)
    2) Структура списка неправильная.
    3) Не используется ключевое слово var, из-за этого все переменные определяются как глобальные.
    4) В списке только ссылки, значит, можно обойтись без JS (a:hover).
     
  6. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    да)
    да.. просто он длиннее. вот теперь правильная?
    Code:
     <ul id="nav">
                         <li class=""><a href="#">Home</a></li>
                         <li class=""><a href="#">About</a>
                             <ul>
                                 <li><a href="#">History</a></li>
                                 <li><a href="#">Team</a></li>
                                 <li><a href="#">Offices</a></li>
                             </ul>
                         </li> 
      </ul>
    вот. заюзал вар, убрал проверку документ ол. в ФФ както интересно начало подставлять клас..
    раз мышкой провел- он все подставил клас, но почемуто не убрал на mouseover :confused:
    второй раз мышкой ровести то к <li class="over">
    ставит еще <li class="over over"> и потом уберает на mouseover до <li class="over">

    в опера и ИЕ зато все отлично
    Code:
     startList = function() { 
    var navRoot = document.getElementById("nav");
                for (i=0; i<navRoot.childNodes.length; i++) {
                      node = navRoot.childNodes[i];
                      if (node.nodeName=="LI") {
                            node.onmouseover=function() {
                                  this.className+=" over";
                            }
                            node.onmouseout=function() {
                                  this.className=this.className.replace(" over", "");
                            }
                      }
                }
    }
    window.onload=startList;
    там применяется li:hover ИЕ такого не понимает
    Code:
    #nav li ul {  
    display: none;
    }
    #nav  li.over ul {
    display: block; 
    }
     
    #586 smOleg, 24 May 2008
    Last edited: 24 May 2008
  7. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Не следует использовать в имени класса пробел, надо заменить " over" на "over".
     
    1 person likes this.
  8. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    вот скопипастил но чегото не работает. а нужно срочно. Помогите :confused:
    Code:
    activateMenu = function(nav) {
    
    /* currentStyle restricts the Javascript to IE only */
    	if (document.all &&
     document.getElementById(nav).currentStyle) {
            var navroot = document.getElementById("nav");
    
            /* Get all the list items within the menu */
    
            var lis=navroot.getElementsByTagName("LI");
            for (i=0; i<lis.length; i++) {
    
               /* If the LI has another menu level */
                if(lis[i].lastChild.tagName=="UL"){
    
                    /* assign the function to the LI */
                 	lis[i].onmouseover=function() {
    
                       /* display the inner menu */
                       this.lastChild.style.display="block";
                    }
                    lis[i].onmouseout=function() {
                       this.lastChild.style.display="none";
                    }
                }
            }
        }
    }
    window.onload= function(){
        /* pass the function the id of the top level UL */
    
        /* remove one, when only using one menu */
        activateMenu('nav');
         }
    просто навожу добираюсь по древу в FF до свойства обьекта у котого даный скрипт должен менять display:none на display:block .. вожу мышкой и ничо не происходит.

    хм.. может потому что FF в доме любого блока на месте lastChild показывает "\n %)
    тогда чегото афторы скрипта напутали
     
    #588 smOleg, 27 May 2008
    Last edited: 27 May 2008
  9. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Может всё-таки this.style.display="block"; и т.д.?
     
  10. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    В FF не проходит условие
     
  11. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    На скрытый блок невозможно навести курсор.

    smOleg, http://code.google.com/p/ie7-js/

    P.S. currentStyle есть и в Опере.
     
  12. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    та я вспомнил.. теперь так:
    Code:
    activateMenu = function(nav) {
    
    /* currentStyle restricts the Javascript to IE only */
       /*	if (document.all &&
     document.getElementById(nav).currentStyle) {*/
            var navroot = document.getElementById("nav");
    
            /* Get all the list items within the menu */
    
            var lis=navroot.getElementsByTagName("LI");
            for (i=0; i<lis.length; i++) {
    
               /* If the LI has another menu level */
                if(lis[i].lastChild.tagName=="UL"){
    
                    /* assign the function to the LI */
                 	lis[i].onmouseover=function() {
    
                       /* display the inner menu */
                       this.lastChild.style.display="block";
                    }
                    lis[i].onmouseout=function() {
                       this.lastChild.style.display="none";
                    }
                }
            }
       /* }*/
    }
    window.onload= function(){
        /* pass the function the id of the top level UL */
    
        /* remove one, when only using one menu */
        activateMenu('nav');
     }
    однако ничего не поменялось
     
  13. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    ок это круто, спасибо. но мне оно хоть бы в ff или опере заработало а потом уже думать про ие
     
  14. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    У тебя есть блок кода


    добавь перед ним

    и посмотри равно ли оно UL :)
     
  15. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    та втом то и дело похоже сдесь оно и ступорится.. грюже ФФ на любом блоке в ДОМЕ в графе ЛАст чаилд показывает "\n " :confused:

    гы.. написал выдало кучу алертов (задолбался мышой клацать) кроме А и аниндефендет ничо небыло
     
    #595 smOleg, 27 May 2008
    Last edited: 27 May 2008
  16. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Это для того и сделано. Пишешь стандартный CSS для Opera и FF, а для IE скрипт сам сделает всё что нужно.
     
  17. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Не похоже, а точно показываю, что цикл не проходит
    а почему именно такой алгоритм?
    Тебе нужно при наведении на ul сделать видимыми LI ?
     
  18. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    незнаю.. главний сказал вот те мега меню мол шоб через н времени все было готово ведь самое трудное меню у тебя уже есть
     
  19. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Тебе нужно при наведении на ul сделать видимыми LI ?
     
  20. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    аа... и вправду на ИЕ данное меню действует.. недодумался я на нем смотрю впоследнюю очередь

    при наведении на ЛИ видимыми дочерние ЮЛ ну вместе с ихними Ли(эти ЛИ в свою очередь засвечивают свои дочерние ЮЛ при наведении)


    вобщем всем спасибо.. с этим скриптом все ясно: под ие только работает на другие браузеры тупо css буду делать ведь они понимают hover на все.
     
    #600 smOleg, 27 May 2008
    Last edited: 27 May 2008
Thread Status:
Not open for further replies.