Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.02.2018, 11:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от WarDoctor
необходимо чтобы результат выбора был доступен не только в пределах обработчика...
Так зачем тогда глобальный объект mapping_arr, выполняйте все необходимые действия в обработчике. И триггер тоже не нужен, а alert(JSON.stringify(mapping_arr)) без наступления события и должен в этом случае возвращать свойство без значения.
Ответить с цитированием
  #12 (permalink)  
Старый 10.02.2018, 11:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от WarDoctor
введение return также не меняет ситуации...
Некому return, это понятно? А $(mapping_name + 'select_type').change( function() и $('#controls').html('mapping_arr: ' + JSON.stringify(mapping_arr));
события асинхронные.

$('select').change( function() {
$('#controls').html(тут вставляем нужное, получая значение выбранной опции как this.value, напрягать JQ по таким пустякам не стоит.)
Ответить с цитированием
  #13 (permalink)  
Старый 10.02.2018, 11:39
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Сообщение от laimas Посмотреть сообщение
Некому return, это понятно?
...return должен вернуть результат обработки переменной в основной код скрипта. возможно я ошибаюсь, но именно так необходимо...
<div id="controls">***</div>
<select id="mapping_select_type">
  <option> Вид карты </ option>
    <option value="HYBRID"> • гибридная карта </option>
    <option value="ROADMAP"> • дорожная карта </option>
    <option value="SATELLITE"> • спутниковая карта </option>
    <option value="TERRAIN"> • физическая карта </option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
  var mapping_page = 'mapping';
  var mapping_divs = '#' + mapping_page;
  var mapping_name = mapping_divs + '_';
  
  var mapping_arr = {};
  $(mapping_name + 'select_type').change( function() {
      mapping_arr = {'mtype':''};
      $(mapping_name + 'select_type option:selected').each(function() {
      	mapping_arr.mtype = $(this).val();
      });
      return mapping_arr;
  }).change();
	
  $('#controls').html('mapping_arr: ' + JSON.stringify(mapping_arr));

})
</script>
Ответить с цитированием
  #14 (permalink)  
Старый 10.02.2018, 11:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$(...).change( function() {
mapping_arr.mtype = this.value;
имя_функции_какого_то_основ ного_скрипта();
})
Ответить с цитированием
  #15 (permalink)  
Старый 10.02.2018, 11:57
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Сообщение от laimas Посмотреть сообщение
$(...).change( function() {
mapping_arr.mtype = this.value;
имя_функции_какого_то_основ ного_скрипта();
})
...тоже пришел к такому же решению - передать результат обработки в промежуточную функцию:
<div id="controls">***</div>
<select id="mapping_select_type">
  <option> Вид карты </ option>
    <option value="HYBRID"> • гибридная карта </option>
    <option value="ROADMAP"> • дорожная карта </option>
    <option value="SATELLITE"> • спутниковая карта </option>
    <option value="TERRAIN"> • физическая карта </option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
  var mapping_page = 'mapping';
  var mapping_divs = '#' + mapping_page;
  var mapping_name = mapping_divs + '_';
  
  var map_arr = {};
  $(mapping_name + 'select_type').change( function() {
      map_arr = {'mtype':''};
      $(mapping_name + 'select_type option:selected').each(function() {
      	map_arr = $(this).val();
      });
      SelectMap (map_arr);
  }).change();
	
  function SelectMap(MapArr) {
		// SelectMaps (MapArr);
	  var mapping_arr = {};
    mapping_arr.mtype = MapArr;
		$('#controls').html('mapping_arr: ' + JSON.stringify(mapping_arr));
	}
})
</script>
Ответить с цитированием
  #16 (permalink)  
Старый 10.02.2018, 12:04
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

...похоже что для наполнения массива необходимыми значениями, а их у меня по условиям работы скрипта может быть несколько, необходимо каждое значение передать в эту функцию и там уже причесать к результирующему выводу.
правильно? jsfiddle.net...
Ответить с цитированием
  #17 (permalink)  
Старый 10.02.2018, 12:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от WarDoctor
правильно?
Нет не правильно. Подумайте, что в обработчике нелогично?
Ответить с цитированием
  #18 (permalink)  
Старый 10.02.2018, 12:16
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Сообщение от laimas Посмотреть сообщение
Нет не правильно. Подумайте, что в обработчике нелогично?
...похоже, что надо вот так: jsfiddle.net - ведь будут различные переменные добавляться...
Ответить с цитированием
  #19 (permalink)  
Старый 10.02.2018, 12:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от WarDoctor
похоже, что надо вот так
Так вообще не надо.

$(mapping_name + 'select_type').change( function() {
.....
$(mapping_name + 'select_type option:selected').each(function() {

это расточительство, когда в обработчике список уже доступен - this.

Значением списка при этом является значение его выбранной опции, то есть this.value - $(this).val() при этом это еще одно расточительство.

В списке с единственным выбором выбранная опция может быть только одна. Попробуйте исходя из этой аксиомы объяснить, что тут происходит?

$(mapping_name + 'select_type option:selected').each(function() {
Ответить с цитированием
  #20 (permalink)  
Старый 10.02.2018, 12:31
Аспирант
Отправить личное сообщение для WarDoctor Посмотреть профиль Найти все сообщения от WarDoctor
 
Регистрация: 02.01.2015
Сообщений: 32

Сообщение от laimas Посмотреть сообщение
$(mapping_name + 'select_type option:selected').each(function() {
...это обход всех возможных значений списка. тут Вы правы - излишества тупицы. мой косяк.
добавив еще один список и его обработчик в конечную функцию приходит только крайний вариант выбора, а вот как заставить накапливать все значения, пока не дотумкал...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инвертация значения из функции Ser8191 Общие вопросы Javascript 1 26.06.2016 15:43
вернуть значения анонимной функции Gowa Events/DOM/Window 2 17.04.2016 01:19
возврат значения в функции imediasun1 Элементы интерфейса 7 17.04.2014 16:44
возврат увеличенного значения AJAX mikeles AJAX и COMET 0 31.10.2009 08:48
Возвращение значения из функции dba Events/DOM/Window 21 06.10.2009 01:33