Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351

Переделать функцию вывода блоков в универсальную

17.10.2016, 19:22. Показов 864. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток
На сайте отображение вкладок происходит по следующим функциям:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var current = 'content_news';
function show(id){
// отключаем отображение всех элементов с классом content
  $('.content').hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
$(document).ready(function(){ 
  show(current);
});
 
var current1 = 'organization';
function show1(id){
// отключаем отображение всех элементов с классом our_text
  $('.our_text').hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
$(document).ready(function(){ 
  show1(current1);
});
 
var current2 = 'video';
function show2(id){
// отключаем отображение всех элементов с классом services_text
  $('.services_text').hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
$(document).ready(function(){ 
  show2(current2);
});
 
var current4 = 'news1';
function show4(id){
// отключаем отображение всех элементов с классом news_text
  $('.news_text').hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
$(document).ready(function(){ 
  show4(current4);
});
Получается так, что на сайте 4 вкладки (меню), на каждой из них несколько подвкладок (подменю). Суть скрипта в том, что он по умолчанию показывает определенную вкладку, а после нажатия на определенную ссылку скрывает в этой вкладке все подвкладки и оставляет только ту, на которую кликнули. Вопрос в том, как переделать функцию таким образом, чтобы она была не для каждой вкладки (класса) отдельная, а единая. То есть, чтобы все работало также, но через одну универсальную функцию.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2016, 19:22
Ответы с готовыми решениями:

написать универсальную функцию для вычисления выражений
написать универсальную функцию для вычисления выражений(См ниже). В main() обеспечить вызов этой функции и отображение результатов...

Создать универсальную функцию для любой DGV
Доброго времени суток Есть одна функция, допустим, functionDGV() и она сделана под конкретный DGV (DataGridView3) но как сделать...

Переписать универсальную функцию сортировки одномерного массива с Си на паскаль
Собственно требуется помощь, я переписал, но ругается на 42, 52, 53, 54 строки(в реализации на паскале). Не могу понять почему. Укажите...

15
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
19.10.2016, 07:03  [ТС]
Еще актуально
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
19.10.2016, 09:23
Пока не вижу проблем:
JavaScript
1
2
3
4
5
6
function show(id, class){
// отключаем отображение всех элементов с классом class
  $(class).hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
0
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
21.10.2016, 11:13  [ТС]
Не работает. Может я в хтмл коде не правильно прописал вызов функции?
JavaScript
1
2
3
4
5
6
7
8
9
10
var current;
function show(id, class){
// отключаем отображение всех элементов с классом content
  $('.content').hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
$(document).ready(function(){ 
  show(current);
});
HTML5
1
2
3
4
5
6
<div class="menu"> 
            <div class="item" id="item_our" onclick="show()"><a href="#content_our">О НАС</a></div>
            <div class="item" id="item_services" onclick="show()"><a href="#content_services">УСЛУГИ</a></div>
            <div class="item" id="item_news" onclick="show()"><a href="#content_news">НОВОСТИ</a></div>    
            <div class="item" id="item_contacts" onclick="show()"><a href="#content_contacts">КОНТАКТЫ</a></div>
        </div>
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
21.10.2016, 11:26
Ну естественно не правильно написали вызов функции. Вы объявили функцию show(), принимающую в себя 2 аргумента (id и class), но в вызове функции (onclick="show()") никаких аргументов на вход функции не подаете. Как функция узнает, с чем ей оперировать? Передайте в функцию show() имя класса, который нужно отобразить.

JavaScript
1
2
3
4
var current;
$(document).ready(function(){ 
  show(current);
});
Это всё не имеет смысла. current при инициализации страницы не определен. Определите в нем имя класса, блоки с которыми вы хотите отобразить при инициализации страницы.

JavaScript
1
2
3
4
5
6
7
8
9
10
var current = 'КЛАСС_КОНТЕНТА';
function show(id){
// отключаем отображение всех элементов с классом content
  $('.content').hide(0);
// включаем отображение элемента с идентификатором id
  $('#' + id).show(0);
}
$(document).ready(function(){ 
  show(current);
});
HTML5
1
2
3
4
5
6
<div class="menu"> 
            <div class="item" id="item_our" onclick="show('КЛАСС_КОНТЕНТА')"><a href="#content_our">О НАС</a></div>
            <div class="item" id="item_services" onclick="show('КЛАСС_КОНТЕНТА')"><a href="#content_services">УСЛУГИ</a></div>
            <div class="item" id="item_news" onclick="show('КЛАСС_КОНТЕНТА')"><a href="#content_news">НОВОСТИ</a></div>    
            <div class="item" id="item_contacts" onclick="show('КЛАСС_КОНТЕНТА')"><a href="#content_contacts">КОНТАКТЫ</a></div>
</div>
0
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
21.10.2016, 13:09  [ТС]
Я запутался. так как все-таки правильно, так:
JavaScript
1
function show(id){
или так:
JavaScript
1
function show(id, class){
и как указывать вызов функции, так:
HTML5
1
onclick="show('show,item_our')
или так
HTML5
1
onclick="show('show')
если у меня class="show"
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
21.10.2016, 13:51
покажите, что именно вам нужно скрывать/показывать?
0
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
21.10.2016, 14:17  [ТС]
вам лучше ссылку на сайт или выложить код?
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
21.10.2016, 14:27
Newibe, без разницы. Главное, чтобы понятно было
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
21.10.2016, 14:29
Newibe, лучше ссылку на сайт.
0
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
21.10.2016, 14:33  [ТС]
http://y91712vc.bget.ru/
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
21.10.2016, 14:40
Ну... так а что не работает-то?
0
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
21.10.2016, 14:46  [ТС]
Все работает. Но все делается через 4 разные функции. А я хотел оптимизировать так, чтобы все делалось через одну функцию.

Добавлено через 26 секунд
Потому что по сути, функция одна, просто работает с разными классами и id
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
21.10.2016, 14:58
Как вариант можно сделать так:
JavaScript
1
2
3
4
$('.menu > div').on('click', function() {
    var id = $(this).attr('id').replace('item_', 'content_');
    show(id);
})
Все события onclick на div'ах менюшки можно убирать
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
21.10.2016, 15:04
Newibe, А теперь скиньте весь ваш код архивом).

Добавлено через 5 минут
Newibe, onclick в любом случае нужно убирать, и вешать обработчики в js скрипте. Я так понимаю вам еще нужно будет сделать так, чтоб при обновлении страницы, сохранялся открытый раздел. Думаю можно работать через адресную строку к примеру в таком виде http://y91712vc.bget.ru/#content_news/news3/ Могу предложить решение, но нужен весь ваш код.
0
5 / 11 / 4
Регистрация: 02.04.2016
Сообщений: 351
21.10.2016, 15:11  [ТС]
Я так понимаю вам еще нужно будет сделать так, чтоб при обновлении страницы, сохранялся открытый раздел.
Абсолютно верно!
и вешать обработчики в js скрипте
Я не понимаю что это значит. В js вообще не секу, только так, в общих чертах.
Вложения
Тип файла: zip archive_2047_1607.zip (5.0 Кб, 2 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2016, 15:11
Помогаю со студенческими работами здесь

Создайте универсальную функцию PrintAnyArr (печать любого массива, кроме усеченных)
Ребят, всем доброго времени суток, нужна ваша помощь) Имеется следующее задание: 1. Создайте универсальную функцию PrintAnyArr (печать...

Прошу оценить/дополнить универсальную функцию для добавления/чтения с базы
Доброй ночи. Начинаю изучать тему sql-инъекций. Хотелось бы создать универсальную функцию, в которую можно было бы оборачивать любые...

Сделать универсальную функцию, которая может ввести и одномерный и двухмерный массивы
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #define N 100 void vvod(int *m,int n); int...

Рандомизация вывода блоков
Доброго времени суток. Вопрос следующего порядка: У каждого блока свой класс: &quot;os_block&quot; и php скрипт их выводит. (Для...

Переделать из файлового вывода в консольный
Помогите пожалуйста! У меня есть задача готовая, но там файловый ввод-вывод. Но мне очень нужно переделать все это в обычный вид, через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru