Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / -1 / 0
Регистрация: 08.03.2017
Сообщений: 159

Вызов функции с аргументом

27.10.2018, 22:01. Показов 1868. Ответов 2

Студворк — интернет-сервис помощи студентам
Привет. Пытаюсь сделать так, чтобы определенный блок появлялся при нажатии на кнопку, а все остальные скрывались. Сделал через аргумент, но что-то не работает. Как исправить код?
HTML5
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
<div class="bttn-zone-yslygi">
    <input type="button" class="bttn-yslugi active-ysl" value="Логотипы" onclick="NameFunc(log);"></input>
    <input type="button" class="bttn-yslugi" value="Вёрстка сайта" onclick="NameFunc(sit);"></input>
    <input type="button" class="bttn-yslugi" value="Дизайн сайта" onclick="NameFunc(design);"></input>
    <input type="button" class="bttn-yslugi" value="Обработка фотографий" onclick="NameFunc(render);"></input>
    <input type="button" class="bttn-yslugi" value="Аватар (картинка)" onclick="NameFunc(ava);"></input>
    <input type="button" class="bttn-yslugi" value="Иконки и Пиксель-Арт" onclick="NameFunc(ic);"></input>
    <input type="button" class="bttn-yslugi" value="Другое" onclick="NameFunc(other);"></input>
</div>
            
            <div class="content-yslygi log">
            </div>
 
            <div class="content-yslygi sit">
            </div>
 
            <div class="content-yslygi design">
            </div>
 
            <div class="content-yslygi render">
            </div>
 
            <div class="content-yslygi ava">
            </div>
 
            <div class="content-yslygi ic">
            </div>
 
            <div class="content-yslygi other">
            </div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var ArrayVar = ['log', 'sit', 'design', 'render', 'ava', 'ic', 'other'];
 
function NameFunc(name){
    for(var i = 0; i < ArrayVar.length; i++){
        if(ArrayVar[i] == name){
            $('.' + ArrayVar[i]).css('display', 'block');
        }
        else $('.' + ArrayVar[i]).css('display', 'none');
        console.log(name);
    }
    return;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2018, 22:01
Ответы с готовыми решениями:

Вызов функции Delphi с аргументом Pointer на C#
В старом проекте на Delphi 7 есть функция SLUpdateMemoryHash которая вызывается из внешней dll. Пытаюсь реализовать вызов даной на .Net...

Вызов функции javascript с аргументом из php кода
Подскажите как правильно вызвать функцию javascript из php и передать ей параметр? Почему этот код: &lt;script...

Многократный вызов пользовательской функции с аргументом типа Range - как исправить?
Добрый день, уважаемые форумчане! Уже третий день бьюсь над следующей проблемой: написал пользовательскую функцию, в которую в...

2
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
27.10.2018, 23:11
Лучший ответ Сообщение было отмечено Disaine как решение

Решение

Disaine, в первую очередь, вам нужно заглянуть в консоль. Не удивлюсь, если там будет что-то вроде "NameFunc is not defined", а если нет, то увидите "log is not defined", "sit is not defined" и т.д. по списку. Первая ошибка лечится правильным расположением кода в документе и тем, когда он начинает выполняться. Вторая ошибка - передачей в функцию строки, а не переменной. Т.е. вместо onclick="NameFunc(log);", пишем onclick="NameFunc('log');". Но лучше пойти каким-то другим путём.

Вариант с использование библиотеки VanillaJS
JavaScript
1
2
3
4
5
const contentYslygi = [...document.querySelectorAll('.content-yslygi')];
[...document.querySelectorAll('.bttn-yslugi')].forEach(el => el.addEventListener('click', e => {
  let _target = e.target.dataset.target;
  contentYslygi.forEach(el => el.style.display = el.classList.contains(_target) ? 'block' : 'none');
}));
Ваш вариант, с использованием jQuery
JavaScript
1
2
3
4
5
const contentYslygi = $('.content-yslygi');
$('.bttn-yslugi').on('click', function(){
    let current = $('.' + $(this).data('target')).show();
    contentYslygi.not(current).hide();
});
HTML-разметка под оба варианта выше:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="bttn-zone-yslygi">
  <input type="button" class="bttn-yslugi active-ysl" data-target="log" value="Логотипы">
  <input type="button" class="bttn-yslugi" data-target="sit" value="Вёрстка сайта">
  <input type="button" class="bttn-yslugi" data-target="design" value="Дизайн сайта">
  <input type="button" class="bttn-yslugi" data-target="render" value="Обработка фотографий">
  <input type="button" class="bttn-yslugi" data-target="ava" value="Аватар (картинка)">
  <input type="button" class="bttn-yslugi" data-target="ic" value="Иконки и Пиксель-Арт">
  <input type="button" class="bttn-yslugi" data-target="other" value="Другое">
</div>
 
<div class="content-yslygi log" >log</div>
<div class="content-yslygi sit">sit</div>
<div class="content-yslygi design">design</div>
<div class="content-yslygi render">render</div>
<div class="content-yslygi ava">ava</div>
<div class="content-yslygi ic">ic</div>
<div class="content-yslygi other">other</div>
Ахтунг! Не забываем отслеживать загрузку DOM, если JS-код располагается в <head> или в другом месте, но до элементов, с которыми он должен работать.
1
0 / -1 / 0
Регистрация: 08.03.2017
Сообщений: 159
28.10.2018, 13:21  [ТС]
Не работает ни jquery способ. Не читалось нажатие кнопки. Я изменил код вот так:
JavaScript
1
2
3
4
5
6
const contentYslygi = $('.content-yslygi');
 
$(document).on('click', '.bttn-yslugi', function(){
    let current = $('.' + $(this).data('target')).fadeIn();
    contentYslygi.not(current).fadeOut();
});
Теперь нажатие читается, но вот блоки не скрываются. Что в таком случае делать?

Добавлено через 2 часа 42 минуты
Проблема решена, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2018, 13:21
Помогаю со студенческими работами здесь

Не работает вызов метода с аргументом std::tuple
https://cdn.discordapp.com/attachments/357887918183940096/553908486015156225/unknown.png ...

Реализовать вызов конструктора с одним аргументом, запретив остальные варианты
Как сделать, чтобы конструктор можно было вызвать только одним способом: //Так можно MyClass x = MyClass(a); //Так нельзя MyClass x...

Копирование файла, указанного первым аргументом, в папку, часть пути к которой указана вторым аргументом
Добрый день. Есть два задания из лабораторной работы. Я бы с радостью их сделал где угодно, кроме cmd, но увы. Есть структура: ...

Что означает % перед аргументом функции?
Что означает % перед аргументом функции? Вот где я это встретил: Test4::MyForm form; Application::Run(%form);

Передача динамической структуры аргументом функции
Помогите, пожалуйста, обнаружить и исправить ошибки. Точнее, компилятор-то их отыскивает, но в чем именно ошибка, в какой идее, синтаксисе...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru