Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Указание ссылки на функцию с параметрами (https://javascript.ru/forum/misc/25446-ukazanie-ssylki-na-funkciyu-s-parametrami.html)

user_i 05.02.2012 22:01

Указание ссылки на функцию с параметрами
 
Извините, может глупый вопрос задаю, но не могу найти решение, уже не одну статью прочитал (.

В статье http://javascript.ru/tutorial/events/intro НАПИСАНО:

function doSomething() { alert('Спасибо') }
Частая ошибка новичков
Обратите внимание - свойству присваивается именно сама функция-обработчик doSomething, а не doSomething():

document.getElementById('button').onclick = doSomething
doSomething() - это результат запуска функции, а так как вызова return в ее коде нет, то этот результат будет undefined.
Как мне правильно указать ссылку на функцию и сразу же указать какие будут значения параметра/-ов

function doSomething(a) { alert(a) }
document.getElementById('button').onclick = doSomething
Как тут указать a='Спасибо' ???? Чтобы результат (после клика) был таким же?
Спасибо )!

рони 05.02.2012 22:13

user_i,
Вариант ...
<!DOCTYPE html>
<html >
<head>
  <title></title>
</head>

<body>
<input type="button" name="go" value="go" id="button" />
<script type="text/javascript">
 function doSomething(a) {
   return function ()
 {
  alert(a)
 }
  }
document.getElementById('button').onclick = doSomething('Спасибо')
</script>
</body>
</html>

рони 05.02.2012 22:18

user_i,
или так...
<!DOCTYPE html>
<html >
<head>
  <title></title>
</head>

<body>
<input type="button" name="go" value="go" id="button" />
<script type="text/javascript">
 function doSomething(a) {

  alert(a)

  }
document.getElementById('button').onclick =  function ()
{
   doSomething('Спасибо')
}
</script>
</body>
</html>

user_i 05.02.2012 22:28

рони, благодарю! Первый вариант не подходит так-как функция массивная+ используется несколько раз. Второй вариант почему-то не срабатывает.
Где использую:
Event.add(element, 'blur', "function() {validate('<?=$val_group_name?>')}");
function validate(val_group_name)
{...}

Какую ошибку выдает:
Object function() {validate('registration')} has no method 'call'

user_i 05.02.2012 22:53

Да, убрал кавычки. Помогло!

Event.add(element, 'blur', function() {validate('<?=$val_group_name?>')});

user_i 06.02.2012 12:08

Цитата:

Сообщение от Maxmaxmaximus
Ну а что по твоему но должен со сторокой делать, ВЫПОЛНЯТЬ СТРОКУ что ли)??

Да, кавычки там не нужны. Уже не знал что делать и поставил их. А так они не нужны. Хоть нашел решение, все же вопрос актуален

Как при создании ссылки передать переменную из JS в функцию???
Используя php вот так работает:
Event.add(element, 'blur', function() {validate('<?=$val_group_name?>')});

А на JS? Оптимальнее в этом случае без PHP, чтобы ввывести в js файл...
Так работает:
Event.add(element, 'blur', function() {validate("value")});

Но нужно что-то вроде
var val_group_name = "value";
Event.add(element, 'blur', function() {validate(val_group_name)});

А не проходит:nono:

Или так
var val_group_name = "value";
Event.add(element, 'blur', function(val_group_name) {validate(val_group_name)});

А не проходит:nono:


Часовой пояс GMT +3, время: 08:10.