Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Jquery как передать параметры var в функцию? Jquery как передать параметры var в функ 
:(
    Опции темы
Cheizer
Дата 22.12.2014, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Дорогие друзья, подскажите пожалуйста, как передать параметр VAR из одной функции в другую?
Первые две click функции должны подменять параметры var  link1 и  link2 в двух последних. Как это сделать ума не приложу.


Код

 $(document).ready(function() {

$("input#id1").click(function() { 
    var link1 = 'http://111111'; 
    var link2 = 'http://222222'; 
}); 

 $("input#id2").click(function() {//ticket 
      var link1 = 'http://111111'; 
      var link2 = 'http://222222'; 
});

 $("input#id3").click(function() {
     $('a#order_link').attr('href', link1);
});  
 $("input#id4").click(function() {  
      $('a#order_link').attr('href', link2);
});

});


Это сообщение отредактировал(а) Aliance - 23.12.2014, 07:56
PM MAIL   Вверх
_zorn_
Дата 23.12.2014, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Код

 $(document).ready(function() {
 var link1;
 var link2;
$("input#id1").click(function() { 
    link1 = 'http://111111'; 
    link2 = 'http://222222'; 
}); 
 $("input#id2").click(function() {//ticket 
      link1 = 'http://111111'; 
      link2 = 'http://222222'; 
});
 $("input#id3").click(function() {
     $('a#order_link').attr('href', link1);
});  
 $("input#id4").click(function() {  
      $('a#order_link').attr('href', link2);
});
 
});

http://yandex.ru/yandsearch?lr=11406&t...%81%D1%82%D0%B8

Это сообщение отредактировал(а) Aliance - 23.12.2014, 07:56
PM MAIL   Вверх
Aliance
Дата 23.12.2014, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



_zorn_, какой смысл объявлять локальные переменные внутри функции $(document).ready(), а потом обращаться к ним из callback`ов обработчиков событий. Это создает лишнее замыкание, да и выглядит странным. Мне кажется правильнее выносить первичное объявление (инициализирование) переменных ВНЕ $(document).ready().
PM MAIL WWW ICQ Skype   Вверх
_zorn_
Дата 23.12.2014, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Да, все верно, затупил.
PM MAIL   Вверх
sQu1rr
Дата 23.12.2014, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Aliance @  23.12.2014,  05:58 Найти цитируемый пост)
Это создает лишнее замыкание, да и выглядит странным. Мне кажется правильнее выносить первичное объявление (инициализирование) переменных ВНЕ $(document).ready(). 

А на мой взгляд это довольно популярная и полезная практика что бы не засорять глобальное пространство, если эти переменные не юзаются извне. Не зря же даже самые популярные библиотеки оборачивают в function()
PM MAIL Skype GTalk   Вверх
Cheizer
Дата 23.12.2014, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Цитата(Aliance @ 23.12.2014,  07:58)
_zorn_, какой смысл объявлять локальные переменные внутри функции $(document).ready(), а потом обращаться к ним из callback`ов обработчиков событий. Это создает лишнее замыкание, да и выглядит странным. Мне кажется правильнее выносить первичное объявление (инициализирование) переменных ВНЕ $(document).ready().

Скажите пожалуйста, можно поподробнее о методе? Как это "ервичное объявление (инициализирование) переменных ВНЕ $(document).ready()." ?
PM MAIL   Вверх
sQu1rr
Дата 23.12.2014, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Cheizer @  23.12.2014,  11:01 Найти цитируемый пост)
Как это "ервичное объявление (инициализирование) переменных ВНЕ $(document).ready()." ? 

Имеется ввиду что если есть конструкция типо
Код

$(document).ready(function() {
    var a; // первичное объявление
    $('...').click(function() {
        a = 123;
    }
});
// переменная а не доступна тут

И переменная a может использоваться вне $(document).ready(), ну или как считает Aliance (у меня противоположное мнение), следует писать так:
Код

var a; // первичное объявление
$(document).ready(function() {
    $('...').click(function() {
        a = 123;
    }
});
// переменная а доступная тут

И все же я бы использовал первый вариант, если переменная а не используется вне function() в которой объявлена
PM MAIL Skype GTalk   Вверх
Aliance
Дата 23.12.2014, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



sQu1rr, согласен, зависит от задач. Я отнес переменные linkX к тем, которые д.б. глобальными. Но вообще возможно было бы логичнее сделать запись данных в hidden поле и его чтение позже, где нужно (конкретно в данном примере, а не всегда).
PM MAIL WWW ICQ Skype   Вверх
Cheizer
Дата 23.12.2014, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Цитата(sQu1rr @ 23.12.2014,  13:10)
Цитата(Cheizer @  23.12.2014,  11:01 Найти цитируемый пост)
Как это "ервичное объявление (инициализирование) переменных ВНЕ $(document).ready()." ? 

Имеется ввиду что если есть конструкция типо
Код

$(document).ready(function() {
    var a; // первичное объявление
    $('...').click(function() {
        a = 123;
    }
});
// переменная а не доступна тут

И переменная a может использоваться вне $(document).ready(), ну или как считает Aliance (у меня противоположное мнение), следует писать так:
Код

var a; // первичное объявление
$(document).ready(function() {
    $('...').click(function() {
        a = 123;
    }
});
// переменная а доступная тут

И все же я бы использовал первый вариант, если переменная а не используется вне function() в которой объявлена

Да, я понимаю, но если в одном $(document).ready
две клик функции, и как из одной передать var переменную в другую???? 
Код

//1
 $('#1').click(function() {
        var a = 111;
    }
//2
 $('#2').click(function() {
        b = a; 
    }


Это сообщение отредактировал(а) Cheizer - 23.12.2014, 13:44
PM MAIL   Вверх
sQu1rr
Дата 23.12.2014, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Cheizer @  23.12.2014,  11:43 Найти цитируемый пост)
две клик функции, и как из одной передать var переменную в другую???? 

click handler - это функция которая выполняется при нажатии на какой-то элемент. Зачем передавать значение из одного хэндлера в другой - лично мне не понятно. Если вам нужно сначало "нажать" на первый элемент который присвоит значение переменной, которая будет использоваться при нажатии на втором элементе, то делайте так как советует _zorn_.

Или потрудитесь объяснить задачу, что бы можно было посоветовать что-то уже более специализированное
PM MAIL Skype GTalk   Вверх
Aliance
Дата 23.12.2014, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Cheizer, вам же уже ответили. Вы должны объявить переменную ВНЕ функции, тогда вы сможете из одной к ней обратиться для записи, а в другой для чтения.
PM MAIL WWW ICQ Skype   Вверх
Cheizer
Дата 23.12.2014, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Цитата(Aliance @ 23.12.2014,  13:59)
Cheizer, вам же уже ответили. Вы должны объявить переменную ВНЕ функции, тогда вы сможете из одной к ней обратиться для записи, а в другой для чтения.

Я не понимаю, но вот так:

Код

$(document).ready(function() {
 var link1;
 var link2;
$("input#id1").click(function() { 
    link1 = 'http://111111'; 
    link2 = 'http://222222'; 
}); 
 $("input#id2").click(function() {//ticket 
      link1 = 'http://111111'; 
      link2 = 'http://222222'; 
});

 $("input#id3").click(function() {
     $('a#order_link').attr('href', link1);
});  
 $("input#id4").click(function() {  
      $('a#order_link').attr('href', link2);
});
 
});


При клике по input#id1 в атрибут a#order_link не попадает данные из переменной  link1, как передать ее туда?
PM MAIL   Вверх
Aliance
Дата 23.12.2014, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Цитата(Cheizer @  23.12.2014,  16:40 Найти цитируемый пост)
При клике по input#id1 в атрибут a#order_link не попадает данные из переменной  link1, как передать ее туда? 

Э, изначальная задача звучала по-другому:
Цитата(Cheizer @  22.12.2014,  23:39 Найти цитируемый пост)
 как передать параметр VAR из одной функции в другую?


Вы определитесь что вам нужно.

Когда происходит и зачем нужен клик по input#id3 и input#id4?

И что за элементы input у которых вы ловите клик? button?
PM MAIL WWW ICQ Skype   Вверх
sQu1rr
Дата 23.12.2014, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 2
Всего: 13



Цитата(Cheizer @  23.12.2014,  13:40 Найти цитируемый пост)
При клике по input#id1 в атрибут a#order_link не попадает данные из переменной  link1, как передать ее туда? 

Ну, давайте еще раз. click() вызывает данную функцию при клике по элементу

Код

$("input#id1").click(function() { // если input#id1 кликнут,
    link1 = 'http://111111'; // link1 равен этому
    link2 = 'http://222222'; // link2 равен этому
}); 
 $("input#id2").click(function() { // если input#id2 кликнут,
      link1 = 'http://111111'; // link1 равен этому
      link2 = 'http://222222'; // link2 равен этому
});
 $("input#id3").click(function() { // если input#id3 кликнут,
     $('a#order_link').attr('href', link1); // a#order_link будет ссылаться на link1
});  
 $("input#id4").click(function() { // если input#id4 кликнут,
      $('a#order_link').attr('href', link2); // a#order_link будет ссылаться на link2
});

То есть если вы кликните на input#id1 то a#order_link не измениться пока вы не кликните по input#id3
Кстати говоря никогда не мешайте ID с тагами. Так как ID в любом случае (должы быть) уникальны, то достаточно (и намного, намного намного оптимальнее) просто обращаться к $('#id1')

Если вы хотите что бы при клике на #id1, #order_link ссылался на link1, так и пишите
Код

$("#id1").click(function() {
    var link = 'http://111111';
    $('#order_link').attr('href', link);
}); 


Это сообщение отредактировал(а) sQu1rr - 23.12.2014, 17:05
PM MAIL Skype GTalk   Вверх
Cheizer
Дата 23.12.2014, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Цитата(Aliance @ 23.12.2014,  16:42)
Цитата(Cheizer @  23.12.2014,  16:40 Найти цитируемый пост)
При клике по input#id1 в атрибут a#order_link не попадает данные из переменной  link1, как передать ее туда? 

Э, изначальная задача звучала по-другому:
Цитата(Cheizer @  22.12.2014,  23:39 Найти цитируемый пост)
 как передать параметр VAR из одной функции в другую?


Вы определитесь что вам нужно.

Когда происходит и зачем нужен клик по input#id3 и input#id4?

И что за элементы input у которых вы ловите клик? button?

Извиняюсь, я наверное не правильно обьяснил. 

Опишу ситуацию подробнее, может что лучше посоветуете.

Есть 4 инпута, типа радиокнопки, и одна ссылка в которой все 4 инпута по клику, должны менять атрибут HREF.

Первые два инпута, выбирают на какой сайт должна быть ссылка.

Код

<input checked="checked" id="1" type="radio" name="tic" /> (1 сайт)
<input  id="2" type="radio" name="tic" />                               (2 сайт)


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

Код

<input id="3" type="radio" name="b" checked="checked" />   (1ссылка)
<input id="4" type="radio" name="b"  />                                 (2ссылка)



И наконец сама кнопка действия :
Код

<a id="link" target="_blank" href="http://11111111111111" >ПЕРЕЙТИ НА САЙТ</a> 



Код

$(document).ready(function() {

$("input#1").click(function() { //1 сайт
    link1 = 'http://1ссылка'; 
    link2 = 'http://2ссылка'; 
}); 
 $("input#2").click(function() {//2 сайт
      link1 = 'http://1ссылка'; 
      link2 = 'http://2ссылка'; 
});

 $("input#3").click(function() {
     $('a#link').attr('href', link1);
});  
 $("input#4").click(function() {  
      $('a#link').attr('href', link2);
});
 
});


И никак не пойму как сделать зависимыми переключение сайтов и их ссылок :(   




PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.