Дополнительные DIV, загруженные браузерами, разрушают мой скрипт при попытке переключения - PullRequest
0 голосов
/ 20 декабря 2011

Здравствуйте, я делаю простой переключатель, который скрывает и показывает определенные блоки текста, когда я нажимаю на опцию навигации.Я делаю это, запустив цикл for и используя length.div, чтобы определить точный div, который я хочу показать или скрыть.Например, seowaukebar добавляет div к моему исходному коду, поэтому, если у кого-то он есть - меняется div.length, мне нужно найти лекарство от этого.Вот мой Javascript:

function forLoopToggle(id) {

var chosenTab = document.getElementById(id);

//loop between the 6th and after divs - the initial value is for Google chrome, and if someone has SEO quake because an extra div is added in that case
for (var toggle = 6;  toggle < div.length; toggle++) {

        //for clicking on experience
        if (div[toggle] == chosenTab && chosenTab.id == 'experience' && chosenTab.style.display != 'block') {   
                        div[toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[5].style.display = 'block';//employment div
                        div[6].style.display = 'none';
                    }

        //for clicking on projects
        if (div[toggle] == chosenTab && chosenTab.id == 'projects' && chosenTab.style.display != 'block') { 
                        div[toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[++toggle].style.display = 'block';
                        div[5].style.display = 'none';
                        div[6].style.display = 'block';//keyword div
                    }

        //for clicking on a div which display is currently none
        else if (div[toggle] == chosenTab && chosenTab.style.display != 'block') {
                        div[toggle].style.display = 'block';
                        div[5].style.display = 'none';
                        div[6].style.display = 'none';
        }

        //all divs that have not been clicked on will not be shown
        else if  (div[toggle] != chosenTab) {
                        div[toggle].style.display = 'none';
        }       
        else if  (div[toggle] = chosenTab && chosenTab.style.display == 'block') {
                        div[toggle].style.display = 'none';
        }   
        //allows you toggle on and off of the same div

        else {
                        div[toggle].style.display = 'none';
                        div[5].style.display = 'none';
                        div[6].style.display = 'none';
            }
}

}

1 Ответ

0 голосов
/ 23 декабря 2011

Вы можете показать / скрыть разделы, такие как this , или переключаться между двумя различными версиями контента с помощью чего-то вроде this . Это делает работу, хотя технически не одобряется запуск функции javascript из <a href="jsFunction()">. Мне нужно научиться делать это правильно, используя прямой JavaScript, но это только начало.

Примечание. В jsfiddle мне пришлось по какой-то причине использовать встроенный javascript, но на практике вы можете поместить функцию в отдельный файл JS.

...