Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   параметры функции (https://javascript.ru/forum/misc/49633-parametry-funkcii.html)

зверек 21.08.2014 18:34

параметры функции
 
Помогите понять, плиз.
вот есть код, который заменяет тэг <p> на тэг <span>, сохраняя при этом все, что внутри <p> заключено
$("p").replaceWith(function(e, myhtml){
  return $("<span>").html(myhtml);
});

<p>тряляля</p>


Как понять, за что отвечают параметры возвратной функции? То есть, запустив код, становится ясно, что myhtml - это тот самый код внутри тэгов. Но как это понять? Не могу найти документацию, где бы разъяснялось за что отвечают параметры, сколько их и пр..
А параметр e выдает три значения подряд: 0 1 2
Что это такое?

Aetae 21.08.2014 18:45

e - очевидно, что это порядковый номер элемента.

P.S. Вообще код выше - это реализованный через задницу .wrap .

зверек 22.08.2014 10:00

Цитата:

Сообщение от Aetae
e - очевидно, что это порядковый номер элемента.

Откуда это очевидно?
Если я возьму вот такую конструкцию:
$('#myform').submit(function (e, force) {
		 e.preventDefault();      
       
    });

здесь параметр e совсем за другое отвечает.
Как понять (где прочитать) за что отвечают параметры функции в разных случаях?
Цитата:

Сообщение от Aetae
P.S. Вообще код выше - это реализованный через задницу .wrap .

Сомневаюсь. Требуется заменить. replaceWith именно для этого и придумана.
Впрочем, напишите свой вариант кода с wrap. Для данной задачи. Сравним, какой проще.

зверек 22.08.2014 10:06

И кстати, я не пойму, что за порядковый номер элемента? Какого элемента? В какой структуре? Весь html код состоит из фразы <p>траляля</p>

skrudjmakdak 22.08.2014 10:16

когда мы пишем $("p") то библиотека находит массив тегов <p>.
а если быть точней, то возвращает jQuery объект, который хранит в себе массив тегов <p>
а в функцию как раз передается индекс этого массива:

<!doctype html>
<html>
<head>
  <title>demo</title>
  <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
</head>
<body>
<p>1</p>
<p>2</p><p>2</p>
<p>3</p>
<script>
$("p").replaceWith(function(e, myhtml){
console.log(e);
  return $("<span>").html(myhtml);
})
</script>
</body>
</html>

зверек 22.08.2014 10:20

В моем коде один единственный тэг <p>
А массив выдает три значения.

skrudjmakdak 22.08.2014 10:22

можно ваш код посмотреть? html и js

зверек 22.08.2014 10:31

Так, здесь я разобрался. Забыл совсем, что пишу код на странице, которая инклудится в некую структуру. Ок. Тут все ясно.
Но вопрос был немного в другом. Как понять за что именно отвечают параметры функций в разных случаях? Выше я привожу возвратную функцию для сабмита формы. Там тоже два параметра и они совсем другое означают, нежели для replaceWith

skrudjmakdak 22.08.2014 10:35

вот те документация про сабмит:
http://api.jquery.com/submit/#submit-eventData-handler

вот те документация про replaceWith:
http://api.jquery.com/replacewith/#replaceWith-function

WorM32 22.08.2014 10:37

В функции параметры могут означать что угодно, нужно смотреть доки.
Но как минимум нужно знать, что в jQuery в функциях обработчиках событий (например, submit) всегда первым параметром идет eventData, содержащее данные о текущем событии.

зверек 22.08.2014 11:05

Цитата:

Сообщение от skrudjmakdak
вот те документация про

Это первое, где я был. Ни слова о параметрах функций и за что они отвечают. Может мой английский не достаточно хорош...Не знаю.. Но если вам не сложно, скопируйте сюда фрагмент текста, где бы это объяснялось.
submit(function (param1,param2)
replaceWith(function(param1, param2)

что есть param1 и param2 в этих случаях?

Цитата:

Сообщение от WorM32
В функции параметры могут означать что угодно, нужно смотреть доки.

так в этом и проблема. Я не могу найти доков, объясняющих это.
Цитата:

Сообщение от WorM32
в jQuery в функциях обработчиках событий (например, submit) всегда первым параметром идет eventData

а вторым...третьим?

skrudjmakdak 22.08.2014 11:12

по первому:
.submit( [eventData ], handler )
eventData и handler чем вам не аргументы?

по второму говорится что в replaceWith можно засунуть функцию обратного вызова, но какие параметры туда передаются там не пишется))

но можно воспользоваться console.log(arguments) внутри callback чтобы увидеть что туда передалось

зверек 22.08.2014 11:26

Цитата:

Сообщение от skrudjmakdak
.submit( [eventData ], handler )
eventData и handler чем вам не аргументы?

так вроде ж эти аргументы имеют отношение к методу submit, а не к функции. Впрочем, я тут уже плаваю...

skrudjmakdak 22.08.2014 11:32

handler - это функция, которая вызывается при клике, и как сказал WorM32 первым аргументом всегда идет event

Aetae 22.08.2014 11:34

Цитата:

Сообщение от зверек (Сообщение 327018)
так в этом и проблема. Я не могу найти доков, объясняющих это.

Это скорее правило чем исключение. Мир жесток.:) Нет в доках - смотри в исходный код, или если лень - проверяй на месте как предложили выше.
P.S. Про wrap был не прав, каюсь. Перезапись html заново конечно всё равно не красиво, но в случае с короткими текстовыми строками - нормально.

зверек 22.08.2014 11:40

ну в общем ясно - console.log() наше все :)


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