Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача переменной в ф-цию (https://javascript.ru/forum/misc/8828-peredacha-peremennojj-v-f-ciyu.html)

warider 15.04.2010 02:49

Передача переменной в ф-цию
 
День добрый. я нуб в яваскрипте , аяксе и квери.

Вступление
Пхп генерит страницу с 100 дивов(матрица 10х10), каждый див имеет id=$x.'_'.$y, и value=$res (может быть 1 или 0, в зависимости от наличия в диве картинки).

Проблемма
При нажатии на див, в jquery должно передаваться значение value, и x, y.
Картинка соответственно должна меняется на противоположную от value, а значения измененного value, x,y должны передаваться на сервер для апдейта БД, откуда они вытягиваются при генерации страницы.

Вопрос
Как в jquery передать значения value, и x, y? Пример пожалуйста)

micscr 15.04.2010 11:23

Цитата:

Сообщение от warider (Сообщение 51666)
Как в jquery передать значения value, и x, y? Пример пожалуйста)

Пример кода - что старались, что не получается - в студию пожалуйста. А то иначе получается вы просите готовый скрипт с нуля вам написать. А это работа, которая обычно оплачивается.
Цитата:

Сообщение от warider (Сообщение 51666)
День добрый. я нуб в яваскрипте , аяксе и квери.

Ну за такое чистосердечное признание помогу немного. :)
Вообще я бы для таких целей все же использовал таблицу а не 100 дивов. В самой таблице уже легко определить строку/столбец, а не анализировать id.
Считывания значений атрибутов в jQuery не проблема :
$(this).attr('xxx'); // вернет значение атрибута xxx.

SkyLight 15.04.2010 13:03

warider, вам надо почитать про each (возможно), onclick, attr и val (хотя val вряд ли, у дива нет такого атрибута). Даже в родной документации к jQuery все подробно описано, изучайте и экспериментируйте. Если в ходе эксперимента возникнут вопросы - возвращайтесь сюда с куском кода, будем вместе разбираться.

warider 15.04.2010 15:08

пример:
1. генерится тдшка
<td style:"bla bla" x='<?echo $x?>' y= '<? echo $y?>'>
<img scr="bla-bla" value='<?echo matrix[$y][$x]?>' onclick="change('<?echo $x?>', '<?echo $y?>', '<?echo matrix[$y][$x]?>')">
</td>

2. jquery

$(function change(x,y,res){

if($(res).val()==1){
$(res).val()=0;
}
if($(res).val()==0){
$(res).val()=1;
}
}

корректен ли этот синтаксис? если нет - поправьте пжлст!))

SkyLight 15.04.2010 15:32

Вы бы хоть для начала разобрались, как в jQuery устанавливать значения.
$(res).val()=0;

Это что такое? Вас кто учил так делать? И что вообще за
$(function change(x,y,res){

Где вы видели такую форму и зачем это было написано? Классическое определение функции уже не в моде?

В общем, читать доки, пока не поймете основы. Сейчас вы их не понимаете ну просто никак. А без понимания вы далеко не уедете.

Octane 15.04.2010 19:36

Цитата:

Сообщение от SkyLight
И что вообще за
$(function change(x,y,res){

Где вы видели такую форму

Это совершенно легальная форма записи и называется Named Function Expression, но в IE она имеет баг. Правда, сомневаюсь, что warider хотел записать NFE :)

warider 15.04.2010 20:11

Цитата:

Сообщение от SkyLight
Вы бы хоть для начала разобрались, как в jQuery устанавливать значения.

какбы затем сюда и пишу, чтобы разобраться, т.к. в интернетах нужного ответа не нашел(кривые руки).

SkyLight 15.04.2010 20:12

Имелось в виду, что именно ТС хотел сделать этой конструкцией. Я как-то не видел, чтобы обработчики событий пихались в $, ведь это совершенно лишнее, особенно в данном случае.

Цитата:

Сообщение от warider (Сообщение 51778)
какбы затем сюда и пишу, чтобы разобраться, т.к. в интернетах нужного ответа не нашел(кривые руки).

Так вот почитайте про val (а лучше вообще все) на сайте разработчика сначала - многие вопросы отпадут сами собой.

Kolyaj 16.04.2010 10:44

Цитата:

Сообщение от Octane
Это совершенно легальная форма записи

Угу, вот только использовать её надо с умом.
(function f1() {});
alert(f1);

FunctionExpression не видны по имени.

Octane 16.04.2010 17:44

Я знаю, что в нормальных браузерах NFE не попадает в текущий контекст, я же отвечал на вопрос:
Цитата:

Сообщение от SkyLight
Где вы видели такую форму



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