Всем привет! На моей странице есть форма, в ней таблица в которой находятся элементы формы и подписи к ним, весь код выкладывать смысла нет из-за его однотипности, но вот пример: Код (Text): <script> function showTooltip() { var myDiv1 = document.getElementById('tooltip1'); var myDiv_1 = document.getElementById('tooltip_1'); var myDiv2 = document.getElementById('tooltip2'); var myDiv_2 = document.getElementById('tooltip_2'); ... var myDiv10 = document.getElementById('tooltip10'); var myDiv_10 = document.getElementById('tooltip_10'); if(myDiv1.style.display == 'none') { myDiv1.style.display = 'block'; } else { myDiv1.style.display = 'none'; } if(myDiv_1.style.display == 'block') { myDiv_1.style.display = 'none'; } else { myDiv_1.style.display = 'block'; } if(myDiv2.style.display == 'none') { myDiv2.style.display = 'block'; } else { myDiv2.style.display = 'none'; } if(myDiv_2.style.display == 'block') { myDiv_2.style.display = 'none'; } else { myDiv_2.style.display = 'block'; } ... if(myDiv10.style.display == 'none') { myDiv10.style.display = 'block'; } else { myDiv10.style.display = 'none'; } if(myDiv_10.style.display == 'block') { myDiv_10.style.display = 'none'; } else { myDiv_10.style.display = 'block'; } return false; } </script> <TABLE> ... <TR> <TD> <div id="tooltip1" style='display: block'>Надпись 1</div> <div id="tooltip_1" style='display: none'>Надпись 2</div> </TD> <TD> <input type='text' name='m1'> </TD> </TR> ... </TABLE> <div id="tooltip1" style='display: block'> <a href='javascript:;' onclick=showTooltip()>Ссылка 1</a> </div> div id="tooltip_1" style='display: block'> <a href='javascript:;' onclick=showTooltip()>Ссылка 2</a> </div> Вроде все необходимое указал. Смысл работы кода заключается в следующем. На странице отображается форма для ввода данных с подписями к полям. Ниже формы отображается ссылка 1. При нажатии на нее надписи к элементам формы меняются, а ссылка 1 превращается в ссылку 2. Все работает замечательно за исключением скорости загрузки страницы. Я в яве не шарю. Код срисовал с интернета и как смог применил к своей задаче. Вопрос: можно ли оптимизировать этот код? т.е. сделать не таким громоздким? Скажу сразу, что сделать только два блока (изначально видимый и изначально невидимый) не получится, т.к. все элементы находятся в таблице. Так же прошу не предлагать зациклить код на PHP (это я уже сделал). Можно ли оптимизировать код именно средствами ява? Всем спасибо за дельные варианты решения задачи!
проверять некогда, но чтото типа такого можно сделать. а если юзать жквери то вообще пару строк Код (Text): function showTooltip() { for(var i=1; i<=10; i++) { myDiv1 = document.getElementById('tooltip'+i); myDiv2 = document.getElementById('tooltip_'+i); myDiv1.style.display = (myDiv1.style.display == 'none') ? 'block' : 'none'; myDiv2.style.display = (myDiv2.style.display == 'none') ? 'block' : 'none'; } return false; }
это один из вариантов, дегромоздкомизации ) да. а должно было что совсем другое получится, типа алгоритма сортировки "пузырьком" )
Я зациклил код с помощью php, но браузеры все равно "видят" код в таком виде как я описал выше. Другими словами циклы скорости работы не добавляют, а это основная задача. Я думал что может быть возможен вариант в котором будет прописано всего два div (один изначально видимый, а второй изначально невидимый), а потом с помощью id="tooltip1" и id="tooltip_1" прописывать любые div-блоки в тексте, которые будут подменять надписи к элементам формы. Но реализовать у меня это не получилось, т.к. в яве мне тяжко. Добавлено спустя 22 минуты 12 секунд: что-то типа этого: Код (Text): <script> function showTooltip() { var myDiv = document.getElementById('tooltip'); var myDiv_ = document.getElementById('tooltip_'); if(myDiv.style.display == 'none') { myDiv.style.display = 'block'; } else { myDiv.style.display = 'none'; } if(myDiv_.style.display == 'block') { myDiv_.style.display = 'none'; } else { myDiv_.style.display = 'block'; } return false; } </script> <div id="tooltip" style='display: block'>видимая запись 1</div> <div id="tooltip_" style='display: none'>скрытая запись 1</div> <div id="tooltip" style='display: block'>видимая запись 2</div> <div id="tooltip_" style='display: none'>скрытая запись 2</div> <div id="tooltip" style='display: block'><a href='javascript:;' onclick=showTooltip()>видимая ссылка</a></div> <div id="tooltip_" style='display: none'><a href='javascript:;' onclick=showTooltip()>скрытая ссылка</a></div> но меняется только первая запись