Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2018, 18:31
Интересующийся
Отправить личное сообщение для vospa Посмотреть профиль Найти все сообщения от vospa
 
Регистрация: 09.12.2017
Сообщений: 16

Как элементам массива назначить переменные?
Доброго времени суток, уважаемая аудитория!
Прошу помощи, в связи с очень плохим знанием скриптов.

Есть кнопка в панели расширения для Photoshop, которая запускает .jsx
<button class="tool" id="gb_3b">MyFunc</button>

Нажатие кнопки запускает нужный .jsx из js. В данном случае gb3b.jsx
$("#gb_3b").button().click(function(a) {
    csInterface.evalScript('$.evalFile("' + extensionRoot + 'work/gb3b.jsx")')
});

Мне нужно передать переменную из jsx в js.
В самом конце jsx помещаю функцию
function func_in_jsx() {
	var rm = r2;
	return rm;
};

А в js добавляю:
$("#gb_3b").button().click(function(a) {
    csInterface.evalScript('$.evalFile("' + extensionRoot + 'work/gb3b.jsx"); func_in_jsx();', function f(x) {var rad_m = x; $('#gblur3rad').slider("value", rad_m);};
});

В случае передачи одной переменной, все замечательно работает. Скрипт jsx отрабатывает все что положено в Photoshop и по завершении, ползунок в панели сдвигается соответственно значению возвращенной переменной.
А вот в случае, когда нужно вернуть несколько переменных, у меня стопор. Не знаю, как это правильно записать.

В jsx меняю функцию на:
function func_in_jsx() {
	var rl = r1;
	var rm = r2;
	return [rl, rm];
};

А вот как это записать правильно в js не знаю. Пробовал по всякому. Никак. Алерт показывает, что вернулось 2 значения, а вот присвоить их переменным не знаю как.
$("#gb_3b").button().click(function(a) {
    csInterface.evalScript('$.evalFile("' + extensionRoot + 'work/gb3b.jsx"); func_in_jsx();', function f(x) {var y = [x]; var rad_m = y[1]; var rad_l = y[0]; $('#gblur3rad').slider("value", rad_m); $('#lowgblur3rad').slider("value", rad_l);};
});

Заранее благодарю за любую помощь
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2018, 20:53
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,555

Наверно так:
var rad_m = x[1]; var rad_l = x[0];
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2018, 22:34
Интересующийся
Отправить личное сообщение для vospa Посмотреть профиль Найти все сообщения от vospa
 
Регистрация: 09.12.2017
Сообщений: 16

Сообщение от Rise Посмотреть сообщение
Наверно так:
var rad_m = x[1]; var rad_l = x[0];
Пробовал это самым первым. Не получается. Если к этой записи добавить: alert (x), то как и положено показывает 2 правильных значения. А вот если такой добавить: alert (rad_l+rad_m), то какой-то бред. Показывает значение rad_l, которое почему-то в 10 раз меньше, чем должно быть и rad_m всегда равное 0. А ползунки, соответственно, один выставляется с этим (меньшим в 10 раз) значением, а другой уходит в крайнее левое положение.
При всем при этом, если только одна переменная возвращается, без массива, то все работает правильно.

P.S. Фуф, понял я почему так получается. Возвращается не числовой массив, а строка. Например: 12.3,4.5
Только вот как такой массив сделать снова числовым?

Последний раз редактировалось vospa, 02.09.2018 в 00:40.
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2018, 22:44
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,555

Сообщение от vospa
показывает 2 правильных значения
В какой виде показывает?
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2018, 00:41
Интересующийся
Отправить личное сообщение для vospa Посмотреть профиль Найти все сообщения от vospa
 
Регистрация: 09.12.2017
Сообщений: 16

Сообщение от Rise Посмотреть сообщение
В какой виде показывает?
Я выше написал. К примеру, так: 12.3,4.5 Но это он оказывается показывает строку, а не 2 числа. А вот как назад в 2 числа это собрать?

Все, разобрался.
var arr = x.split(','); var rad_l = arr[0]; var rad_m = arr[1];

Но все равно, большое спасибо. Без Вас бы так и тыкался, придумывая невесь что :-)

Последний раз редактировалось vospa, 02.09.2018 в 00:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить переменные не просто в файл php, а в его php-функцию kupidon Общие вопросы Javascript 1 11.12.2016 09:02
Как улучшить сортировку массива? Armen Общие вопросы Javascript 3 12.10.2014 19:17
Подскажите как сравнить первые элементы многомерного массива? yloboda Элементы интерфейса 3 08.06.2014 14:00
Как достать данные из JSON массива? Dimaz jQuery 15 27.11.2012 19:58
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 12:55