Невозможно получить доступ к переменной option во время цикла по массиву строк

Я хочу получить доступ к параметрам select на основе стоимости. У меня есть массив из бэкэнда, затем я преобразовал его в массив JavaScript, но получил эту ошибку

Uncaught Error: Syntax error, unrecognized expression: #workShop option[value=parentClosedWS[i]]

Когда я печатаю ParentCloseWS, он имеет такие значения, как это ["str1", "str2"] Вот код:

var parentClosedWS = <?php echo json_encode($parentClosedWS);?>;
var closedWS = <?php echo json_encode($closedWS );?>;
console.info(closedWS);
console.info(parentClosedWS);
for (i = 0; i < parentClosedWS.length; i++) {
  console.info(typeof(parentClosedWS[i]));
  var parent = String(parentClosedWS[i]);
  console.info(parent);
  $("#workShop option[value = " + 'parentClosedWS[i]' + "]").prop('disabled', true);
}

Это HTML:

<select id = "workShop" class = "floatLabel" name = "workshopsel">
  <option value = "" class = "empty"></option>
  <option value = "Marketing">Marketing </option>
  <option value = "Sales">Sales</option>
  <option value = "IT">IT</option>
  <option value = "Graphic Design">Graphic Design</option>
  <option value = "HR">HR</option>
  <option value = "Supply chain">Supply chain</option>
  <option value = "Media production">Media production</option>
  <option value = "Development">Development</option>
  <option value = "TOT">TOT</option>
  <option value = "Project management">Project management</option>
</select>

Также укажите HTML.

Waleed Iqbal 02.04.2018 19:02

Пожалуйста, предоставьте образцы данных явный - (Что такое $parentClosedWS, что такое $closedWS?), То же самое с вашим консольный вывод. Другая ваша проблема: вы хотите получить доступ к parentClosedWS[i], но вы создали здесь НИТЬ и неправильно вызываете объект!

Adrian Preuss 02.04.2018 19:03
$(`#workShop option[value=${parentClosedWS[i]}]`).prop('disabled', true);
connexo 02.04.2018 19:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
54
1

Ответы 1

Удалите одинарные кавычки вокруг parentClosedWS[i];. Эти одинарные кавычки преобразуют его в эту конкретную строку, а не дают вам значение.

Строка должна гласить:

$("#workShop option[value = " + parentClosedWS[i] + "]").prop('disabled', true);

Вот рабочий пример:

var parentClosedWS = ["HR", "IT"];
for (i = 0; i < parentClosedWS.length; i++) {
  $("#workShop option[value = " + parentClosedWS[i] + "]").prop('disabled', true);
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id = "workShop" class = "floatLabel" name = "workshopsel">
  <option value = "" class = "empty"></option>
  <option value = "Marketing">Marketing </option>
  <option value = "Sales">Sales</option>
  <option value = "IT">IT</option>
  <option value = "Graphic Design">Graphic Design</option>
  <option value = "HR">HR</option>
  <option value = "Supply chain">Supply chain</option>
  <option value = "Media production">Media production</option>
  <option value = "Development">Development</option>
  <option value = "TOT">TOT</option>
  <option value = "Project management">Project management</option>
</select>

Именно это значительно упрощают литералы шаблонов ES6: $(`#workShop option[value=${parentClosedWS[i]}]`).prop('disabled', true);

connexo 02.04.2018 19:04

Другие вопросы по теме