Javascript.RU

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

Как сделать видимость от 2х переменных (от 1й - знаю)
Известна видимость от 1й переменной.
Цветом выделен скрипт CLOP - закрыть/открыть пункт/подробность
В <body>...</body> одна из множества таблиц, видимостью которой управляет переменная _00, через "одноимённый" img - img_00
Под подробным текстом - img[-] сворачивание пункта (требуется в конце огромного текста, т.к. управляющий img[+] уже вне экрана)
-------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Название</title>
*!*
<style type="text/css">
 .sub{ visibility: hidden;
       display: none; }
</style>
<script language=javascript>
function CLOP(subName) {                           // закрыть/открыть подробность subName
if (eval(subName).style.visibility == "visible") { // если она видима
    eval(subName).style.visibility = "hidden";     // закрыть
    eval(subName).style.display = "none"           // сжать опустевшее место
    eval("img"+subName).src="closed.gif" }         // поменять картинку
else {     
    eval(subName).style.visibility = "visible";    // открыть
    eval(subName).style.display = "list-item"      // раздвинуть текст
    eval("img"+subName).src="opened.gif" }}        // поменять картинку
</script>
*/!*
</head>


<body>
№ текста.(<img src ="closed.gif" id="img_00" onclick ="CLOP('_00')">
Краткий текст.
<table border="1" width="100%" class ="sub" id="_00">
	<tr>
	     <td>Подробный текст.
             <br><img src ="opened.gif" onclick ="CLOP('_00')">
         </td>
	</tr>
</table>
</body>

</html>
-------------------------
Требуется управлять видимостью от 2х видов переменных (скажем, от _00 и s_00 = № пункта, № уровня вложенности),
а лучше от двумерного массива s[№ пункта, № уровня вложенности]
-------------------------
Стандартно дерево управляется/выглядит
Оглавление - много пунктов:
1.[+]
2.[+]
3.[+]
...
Каждый пункт раскрывается/закрывается (например, 1й):
1. [-]
  1.1 [+]
  1.2 [+]
  1.3 [+]
2.[+]
3.[+]
...
А те соответственно, дальше (например, 1й и 1.2й)
1. [-]
  1.1 [+]
  1.2 [-]
     1.2.1 [+]
     1.2.2 [+]
     1.2.3 [+]  
  1.3 [+]
2.[+]
3.[+]
...
Это стандартное управление и оно прекрасно работает.
-------------------------
Требуется добавив переменную № уровня,
одним кликом открывать/закрывать все пункты верхних уровней вложений/оглавлений

Например, Вид ДО нажатия на второй уровень:
1й уровень оглавления.[-]
2й уровень оглавления.[+]
3й уровень оглавления.[+]

1.[+]
2.[+]
3.[+]
...
Вид ПОСЛЕ нажатия на второй уровень:
1й уровень оглавления.[-]
2й уровень оглавления.[-]
3й уровень оглавления.[+]

1. [-]
  1.1 [+]
  1.2 [+]
  1.3 [+]
2.[-]
  2.1 [+]
  2.2 [+]
  2.3 [+]
3.[-]
  3.1 [+]
  3.2 [+]
  3.3 [+]
...

Последний раз редактировалось Пенсионер, 10.11.2015 в 09:23. Причина: вставка [js] форматирующих тэгов и пояснение проблемы
Ответить с цитированием
  #2 (permalink)  
Старый 08.11.2015, 23:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Пенсионер,
Выпадающее меню на jquery
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2015, 00:06
Новичок на форуме
Отправить личное сообщение для Пенсионер Посмотреть профиль Найти все сообщения от Пенсионер
 
Регистрация: 08.11.2015
Сообщений: 4

Спасибо, но это не то. (т.к. последующие клики закрывают предыдущие).

Можно ли заменить имена переменных элементами двумерного массива?
Чтобы элементы менялись от клика:
- 1й на пункт (как сейчас имена),
- 2й на уровень вложенности.
А видимость определялась их сочетанием (1 || 2)

Последний раз редактировалось Пенсионер, 09.11.2015 в 10:17. Причина: Удалил лишнее
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2015, 00:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Пенсионер,
учебник хороший ссылка вверху ... код размещаемый лучше форматировать
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

и наверно надо как- то без
Сообщение от Пенсионер
eval
и
Сообщение от Пенсионер
windows-1251
но дело ваше ... а в целом непонял что вы хотите сделать.
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2015, 01:23
Новичок на форуме
Отправить личное сообщение для Пенсионер Посмотреть профиль Найти все сообщения от Пенсионер
 
Регистрация: 08.11.2015
Сообщений: 4

Очень признателен Вам за помощь.

Увы, пока не могу
- задействовать 2ю переменную для управления видимостью.
- отказаться от eval, т.к. они работают, а чем их заменить я не знаю.

Подправил 1й пост = сделал яснее свой вопрос.
Нашёл учебник https://learn.javascript.ru/first-steps

Последний раз редактировалось Пенсионер, 09.11.2015 в 10:23. Причина: Удалил лишнее - вопросы о лог.операциях
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2015, 01:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Пенсионер,
смутно вас понимаю ...
<!DOCTYPE HTML>
<html>

<head>
    <meta charset="utf-8">
    <title>Название</title>
    <style type="text/css">
        .sub {
            visibility: hidden;
            display: none;
        }
    </style>
    <script>
        function CLOP(subName) {
            var el = document.getElementById(subName),
                img = document.getElementById("img" + subName);
            if (el.style.visibility != "visible") {
                el.style.visibility = "visible";
                el.style.display = "list-item"
                img.src = "opened.gif"
            } else {
                el.style.visibility = "hidden";
                el.style.display = "none"
                img.src = "closed.gif"
            }
        }

        function CLO(subName) {
            var el = document.getElementById(subName),
                img = document.getElementById("img" + subName);

            if (el.style.visibility != "hidden") {
                el.style.visibility = "hidden";
                el.style.display = "none"
                img.src = "closed.gif"
            }
        }
    </script>
</head>

<body>

    Текст1.(<img src="closed.gif" id="imgsub00" onclick="CLOP('sub00')"> Текст2.
    <table border="1" width="100%" class="sub" id="sub00">
        <tr>
            <td>Текст3.
                <br>
                <img src="opened.gif" onclick="CLO('sub00')">
            </td>
        </tr>
    </table>
</body>

</html>
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2015, 02:01
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,672

Пенсионер, javascript-дерево
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2015, 11:15
Новичок на форуме
Отправить личное сообщение для Пенсионер Посмотреть профиль Найти все сообщения от Пенсионер
 
Регистрация: 08.11.2015
Сообщений: 4

Большое спасибо за помощь.

1. Уточнил свой вопрос в 1м посте (удалил лишнее)
2. Изучаю Вашу ссылку. Материалов там много и они интересны. Правда, кажется не по моей проблеме. И немножко трудно (далеко ушло вперёд программирование от моей молодости)
3. Да, Ваш вариант кода тоже работает. Интересно, он: быстрее, или экономичнее, или понятнее/читабельнее, или eval - анахронизм?

Последний раз редактировалось Пенсионер, 09.11.2015 в 11:45.
Ответить с цитированием
  #9 (permalink)  
Старый 09.11.2015, 11:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от Пенсионер
3. Да,
всё что вы перечислили
Ответить с цитированием
  #10 (permalink)  
Старый 09.11.2015, 16:00
Аспирант
Посмотреть профиль Найти все сообщения от pnpquest
 
Регистрация: 09.11.2015
Сообщений: 94

Сообщение от Пенсионер
или eval - анахронизм
Нет. Он есть во всех спеках, включая es7.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
как сделать чтобы в popup окне показывалось картинка? sarik Общие вопросы Javascript 31 15.03.2013 13:12
как сделать так чтобы в popup окне принимался css стили,? sarik Общие вопросы Javascript 2 12.03.2013 10:24
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06