С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95

Как передать аргумент в функцию при клике?

21.02.2016, 01:26. Показов 6295. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть такой код, который работает. Он выводит див в верхнем правом углу, в котором написано, что что-то не так. В общем, уведомления.
Вот кнопка, которая не пропускает пустую форму. Она выводит тот самый див.
HTML5
1
2
3
4
5
<form action="comments.php" method="POST">
<textarea id="insert_comment" name="new_comment" rows=7 cols=60></textarea></br>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input id="submit_comment" type="submit">
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
document.getElementById('submit_comment').onclick = not;
function not() {
var txt = document.getElementById('insert_comment').value;
if(txt == '')
{
    document.getElementById('notifications').style.display = 'block';
    document.getElementById('notif_text').innerHTML = 'Нельзя оставить пустой комментарий';
    setTimeout(display_none_block, 4000);
    return false;
}
return true;
}
function display_none_block() {
    document.getElementById('notifications').style.display = ('block' ? 'none' : 'none');
    }
Хочу сделать его более универсальным. Чтобы функцию можно было записать в теге с атрибутом onclick , а в качестве атрибута передать ей сообщение, которое должно вывестись в диве. Но у меня нихрена не получается, что я только не пробовал. Наверно, перепробовал все, кроме правильного решения. Помогите, пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2016, 01:26
Ответы с готовыми решениями:

Как при выборе значения в select выполнить функцию php и передать в ей аргумент (значение select)
Вообще, я хочу сделать выборку в таблице. После выбора в &lt;select&gt;, в таблице должны остаться запись только с подходящим значением. Вот моя...

Как передать в функцию аргумент с арифметическим действием?
вот такой код: &lt;?php $arr = ,,,,]; function e($num, $s) { foreach ($num as $value) { echo $value,$s,$value; }

Как правильно передать уникальный аргумент в функцию
Здравствуйте! Помогите пожалуйста в решении такой проблемы: Есть структура, она должна хранить в себе строку, и уникальный символ. В...

12
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
21.02.2016, 01:53
Nbot,
Цитата Сообщение от Nbot Посмотреть сообщение
document.getElementById('submit_comment' ).onclick = not;
не понятно как у вас вообще это работает. Обычно делают так:
JavaScript
1
2
3
document.getElementById('submit_comment').onclick(function(){
   // ваш код
})
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
document.getElementById('submit_comment').onclick(not($data));
 
function not(data) {
    var txt = document.getElementById('insert_comment').value;
    if(txt == '')
    {
        document.getElementById('notifications').style.display = 'block';
        document.getElementById('notif_text').innerHTML = data;
        setTimeout(display_none_block, 4000);
        return false;
    }
    return true;
}
function display_none_block() {
    document.getElementById('notifications').style.display = ('block' ? 'none' : 'none');
}
Добавлено через 3 минуты
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var submit_comment = document.getElementById('submit_comment');
// $data необходимо принять откуда-нибудь
submit_comment.onclick(not($data));
 
function not(data) {
    var txt = document.getElementById('insert_comment').value;
    if(txt == '')
    {
        submit_comment.style.display = 'block';
        document.getElementById('notif_text').innerHTML = data;
        setTimeout(display_none_block, 4000);
        return false;
    }
    return true;
}
function display_none_block() {
    submit_comment.style.display = 'none';
}
0
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
21.02.2016, 01:53  [ТС]
я уже немного подправил свой код, теперь он делает что надо, но все равно остается пустой комментарий, как будто return false и нет вовсе
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function not(x) {
var txt = document.getElementById('insert_comment').value;
if(txt == '')
{
    document.getElementById('notifications').style.display = 'block';
    document.getElementById('notif_text').innerHTML = x;
    setTimeout(display_none_block, 4000);
    return false;
}
    return true;
}
function display_none_block() {
    document.getElementById('notifications').style.display = ('block' ? 'none' : 'none');
    }
HTML5
1
2
3
4
5
<form action="comments.php" method="POST">
<textarea id="insert_comment" name="new_comment" rows=7 cols=60></textarea></br>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input id="submit_comment" type="submit" onclick="not('хопачки!')">
</form>
0
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
21.02.2016, 01:55
Nbot, А в x вы что передаете?
0
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
21.02.2016, 01:56  [ТС]
вот это
HTML5
1
<input id="submit_comment" type="submit" onclick="not('хопачки!')">
0
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
21.02.2016, 01:58
А в comments.php у вас что?
0
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
21.02.2016, 02:21  [ТС]
скрипт для добавления комментариев на страницу

Добавлено через 6 минут
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var submit_comment = document.getElementById('submit_comment');
// $data необходимо принять откуда-нибудь
submit_comment.onclick(not($data));
function not(data) {
* * var txt = document.getElementById('insert_comment').value;
* * if(txt == '')
* * {
* * * * submit_comment.style.display = 'block';
* * * * document.getElementById('notif_text').innerHTML = data;
* * * * setTimeout(display_none_block, 4000);
* * * * return false;
* * }
* * return true;
}
function display_none_block() {
* * submit_comment.style.display = 'none';
}
этот ваш скрипт не работает. в нем некоторые неточности есть, но и после исправления не работает(

Добавлено через 15 минут
ееа! Разобрался)
Если кто-то столкнется с такой же проблемой:
HTML5
1
2
3
4
5
<form action="comments.php" method="POST">
<textarea id="insert_comment" name="new_comment" rows=7 cols=60></textarea></br>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input id="submit_comment" type="submit" onclick="return not('РАБОТАЕТ!!!')">
</form>
-тут важно, чтобы в атрибуте onclick был ретурн.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function not(x) {
var txt = document.getElementById('insert_comment').value;
if(txt == '')
{
    document.getElementById('notifications').style.display = 'block';
    document.getElementById('notif_text').innerHTML = x;
    setTimeout(display_none_block, 4000);
    return false;
}
    return true;
}
function display_none_block() {
    document.getElementById('notifications').style.display = ('block' ? 'none' : 'none');
    }
0
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
21.02.2016, 02:25
Nbot, Nbot, onclick все-таки лучше использовать в js.

Сутки сижу голова не варит
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
window.onload = function(){
    var submit_comment = document.getElementById('submit_comment');
 
    submit_comment.onclick = function(e){
        e.preventDefault();
        not('привет');
    };
 
    function not() {
        var txt = document.getElementById('insert_comment').value;
        if(txt == '')
        {
            submit_comment.style.display = 'block';
            document.getElementById('notif_text').innerHTML = arguments[0];
            setTimeout(display_none_block, 4000);
            return false;
        }
        return true;
    }
    function display_none_block() {
        submit_comment.style.display = 'none';
    }
};
1
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
21.02.2016, 02:29  [ТС]
спасибо, я разобрался) Ваш код проверять не буду, но думаю, что он работает тоже. Такая нетривиальная загвоздка была - false не работал. Если бы не эта статья, я бы не додумался сам: https://learn.javascript.ru/default-browser-action

Добавлено через 1 минуту
а почему лучше писать в js ? Можете объяснить?
0
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
21.02.2016, 02:31
Цитата Сообщение от AlexBBB Посмотреть сообщение
submit_comment.onclick = function(e){ e.preventDefault(); not('привет'); };
Эта часть отвечает за ваш false в onclick. Там есть разница, для нативного js.
0
 Аватар для Nbot
4 / 4 / 1
Регистрация: 30.07.2014
Сообщений: 95
21.02.2016, 02:42  [ТС]
блин, ваш код не работает

Добавлено через 2 минуты
уведомление не появляется, и комментарий оставляется
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
21.02.2016, 04:10
AlexBBB, именно так это и делается
при назначении именованной функции на событие указывается имя этой функции без скобок

проверяйте:
HTML5
1
2
3
4
5
<div id="myDiv">Click me</div>
<script>
function myFunc () {alert (123)}
document.getElementById ('myDiv').onclick = myFunc;
</script>
аналогично только имя функции без скобок используется при её назначении на событие методом addEventListener ()

чтобы всё же передать поименованной функции какой-то аргумент(-ы), делается вложение этой именованной функции в безымянную, например, так:
HTML5
1
2
3
4
5
<div id="myDiv">Click me</div>
<script>
function myFunc (x) {alert (x)}
document.getElementById ('myDiv').onclick = function () {myFunc ('Hi!')}
</script>
1
22 / 22 / 9
Регистрация: 16.03.2015
Сообщений: 193
21.02.2016, 16:42
Nbot, ваш код тоже)

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
window.onload = function(){
    var submit_comment = document.getElementById('submit_comment'),
        notif_text = document.getElementById('notif_text');
 
    submit_comment.onclick = function(){
        var txt = document.getElementById('insert_comment').value;
        if(txt.length == 0){
            not('привет');
            return false;
        }
    };
 
    function not() {
        var txt = document.getElementById('insert_comment').value;
        if(txt == '')
        {
            notif_text.style.display = 'block';
            notif_text.innerHTML = arguments[0];
            setTimeout(display_none_block, 4000);
            return false;
        }
        return true;
    }
    function display_none_block() {
        notif_text.style.display = 'none';
    }
};
Добавлено через 55 секунд
kalabuni, да, я уже понял, свою ошибку, как раз сидел читал) Спасибо за простое объяснение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2016, 16:42
Помогаю со студенческими работами здесь

Можно ли передать функцию как аргумент другой функции?
mojno li v iazike C peredati functiiu kak argument drugoi functii. sori za angl. bukvi. mersi.

Передать функцию как входной аргумент другой функции
Здравствуйте господа. Помогите пожалуйста, как в Матлабе функция задать как входной аргумент? К примеру: function = Dalamber(...

Передать аргумент argv не в main функцию как глобал
Здравствуйте!Мне нужно получить аргументы командной строки не для main() функции,передать вектор argv не в main(),а в другую...

Как передать аргумент в внешнюю функцию к которой обращение из другой фунеции
function f1(x) { //как добавить в это поле видимости y который = 5 (let end = f2(f1,5);) return alert('f1:'+x+y); }; ...

Как передать в функцию переменную-структуру через аргумент типа object?
Функция, о которой идёт речь- встроенный обработчик событий и грош цен этому обработчику, если никаких данных кроме собственно объекта в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru