#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
На веб-сайте моей школы на домашней странице есть выпадающий список курсов, на которые вы в настоящее время зарегистрированы. Однако, если вы видите это, он загроможден буквами, которые многие люди, возможно, не захотят видеть.
Я уже знаю, как я собираюсь это сделать. Я собираюсь использовать jQuery для выбора каждого элемента списка:
var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link");
Это возвращает массив <a>
элементов в текстовой форме.
Используя links.text("Boo!");
, я могу установить для текста всех из них значение «Boo!», Но я хочу изменить каждый из них по отдельности, используя цикл for / in для итерации по каждому <a>
и изменения текста в зависимости от значения href
.
Однако всякий раз, когда я делаю это, поскольку элементы в массиве являются строками, я ничего не могу с ними сделать с помощью jQuery.
Любая помощь в этом приветствуется 🙂
Вот мой код на данный момент (выполняется $.getScript()
из букмарклета JS):
var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link");
//links.text("Boo!");
var count = 1;
for (var link in links) {
link.text("Boo #" count);
count = 1;
}
Соответствующая разметка: http://hastebin.com/ulijefiqaz.scala
Комментарии:
1. включить весь соответствующий код в OP
2. Две вещи — соответствующая разметка также была бы полезна. Также:
for...in
циклы действительно должны использоваться только для перебора ключей в объекте. Если вы выполняете итерацию по массиву, вы действительно должны использовать стандартныйfor
цикл. Кроме того, поскольку это массив, вы также можете просто использоватьforEach
…3. @anied Я привык использовать циклы for / in на python, так что мне это не приходило в голову. Каковы были бы преимущества использования forEach вместо for / in? Также я добавил ссылку hastebin в соответствующую разметку.
4. @RedXTech — forEach — это синтаксис, который предпочитают некоторые люди, поскольку он позволяет вам использовать функцию (хотя это сложно / невозможно
break;
. Но что более важно, вы не должны использоватьfor...in
циклы для перебора массива — это может привести к проблемным результатам …5. @anied ах, хорошо, спасибо 🙂
Ответ №1:
Вы можете использовать .each
функцию итератора jQuery.
var links = $(".d2l-datalist li .d2l-course-selector-item .d2l-left .vui-link");
var count = 1;
links.each(function() {
$(this).text("Boo #" count );
});
Комментарии:
1. Основные тесты работали до сих пор, будут приняты, как только я протестирую основные функции 🙂