Как создать цикл в определении функции jQuery?

Я новичок в jQuery, но пока добился хороших результатов.

Теперь я пытаюсь определить несколько операторов автозаполнения, связанных с различными полями текстового ввода.

Я вручную создал эти 2, и они работают нормально:

$( "#fromLocation_1" ).autocomplete({
     source: strLocations
     });
            
$( "#fromLocation_2" ).autocomplete({
     source: strLocations
     });

Однако это не работает:

$for(i=0; i<20; i++)
    {
    $( "#toLocation_"+i ).autocomplete({
    source: strLocations
        });}

Итак, либо я использую совершенно глупый подход, либо в моем коде есть какая-то базовая ошибка.

Вся помощь оценена по достоинству!

ты можешь сделать это:$( "#fromLocation_1,#fromLocation_2" ).autocomplete({source: strLocations });

Death-is-the-real-truth 06.06.2024 12:33

что такое $for? проверьте консоль инструментов разработчика браузера на наличие ошибок

Jaromanda X 06.06.2024 12:33

Также #fromLocation не равно #toLocation

Death-is-the-real-truth 06.06.2024 12:34

Используйте class или другой неуникальный атрибут.

Insyte 06.06.2024 12:35

циклический способ вообще не рекомендуется

Death-is-the-real-truth 06.06.2024 13:21
Поведение ключевого слова "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
5
72
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Проблема с вашим циклом для функции автозаполнения, по-видимому, связана с синтаксической ошибкой. В jQuery правильный синтаксис цикла for не включает знак доллара ($) перед for.

Вот исправленная версия вашего цикла:

for(var i = 0; i < 20; i++) {
  $("#toLocation_" + i).autocomplete({
    source: strLocations
  });
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

УХ ТЫ!! Столько замечательных ответов и так быстро! Любой из ответов можно было отметить как «правильный». Спасибо всем, теперь все работает отлично. Ох ради $ и var ;-)

Old Skewl Des 06.06.2024 13:09

похоже проблема с синтаксисом, попробуйте.

for (var i = 0; i < 20; i++) {
  $("#toLocation_" + i).autocomplete({
    source: strLocations
  });
}

Этот пример кода, похоже, во многом идентичен коду в двух других ответах. В двух других ответах также содержалась вспомогательная информация, но этот ответ не содержит дополнительной информации.

SmellyCat 08.06.2024 16:08
Ответ принят как подходящий

Чтобы создать цикл в определении функции jQuery для настройки нескольких полей автозаполнения, вы можете использовать стандартный цикл JavaScript for. Ваша попытка почти правильна, но есть пара синтаксических ошибок. Вот как можно правильно определить цикл

for (var i = 0; i < 20; i++) {
  $("#toLocation_" + i).autocomplete({
    source: strLocations
  });
}

Объяснение:

  1. Синтаксис цикла for. Убедитесь, что синтаксис цикла for правильный, с помощью правильных круглых и фигурных скобок.
  2. Объявление переменной: объявите счетчик цикла i, используя var, let или const.
  3. Объединение строк: используйте оператор +, чтобы объединить строку «#toLocation_» со счетчиком цикла i.

Это отвечает на заданный вопрос, но, к вашему сведению, увеличение идентификаторов обычно считается антишаблоном. $(".location").each(function() { $(this).autocomplete... будет применяться в цикле или (согласно другому ответу) применяться непосредственно ко всей коллекции, без необходимости какого-либо цикла.

fdomn-m 06.06.2024 13:42

@jayesh stackoverflow.com/help/gen-ai-policy

DavidW 08.06.2024 08:04

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