Синтаксис Javascript для добавления переменной цикла внутри другой переменной

#javascript #loops #variables #text

#язык JavaScript #петли #переменные #текст

Вопрос:

Я хочу включить в цикл следующие переменные идентификатора: e1, e2 и т.д.

Каков правильный синтаксис для обработки элементов ‘#e’ i и ‘#e’ i, чтобы избежать написания нескольких функций, например : $(document).on('change', '#e1', function() { и var exp = 'e1';

PS: В настоящее время приведенная ниже функция изменения не запускается.

 for (var i = 0; i lt; 10; i  ) {    $(document).ready(function() {   $(document).on('change', '#e' i, function() {  if ($("#e" i).is(":checked")) { var chk = $('#e' i).val(); var exp = 'e' i; }  else { chk = 0 ; var exp = 'e' i; }  $.ajax({  url: "modify.php",  method: "POST",  data: {check: chk, experience: exp },  });  });   })  ;  }   

Комментарии:

1. Не используйте динамические идентификаторы (никогда, не только для решения этой проблемы). Вместо этого используйте общие классы, чтобы затем вы могли делегировать событие всем элементам, соответствующим определенному классу.

Ответ №1:

Вы усложняете свою жизнь и слишком усложняете свой код. Рассмотрим этот подход, в котором используется имя класса, а не динамические идентификаторы.

 $(document).ready(function() {  $('body').on('change', '.changeable', function() {  let data = {  check: $(this).is(":checked") ? $(this).val() : 0,  experience: $(this).data('ref')  }  return console.log(data);  $.ajax({  url: "modify.php",  method: "POST",  data: data,  });  }); }); 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt; lt;input type='checkbox' data-ref="e1" class="changeable" value='val1' /gt; lt;input type='checkbox' data-ref="e2" class="changeable" value='val2' /gt; lt;input type='checkbox' data-ref="e3" class="changeable" value='val3' /gt; 

Комментарии:

1. В точку. Спасибо! Королевский и @CertainPerformance