Как вставить значения в объект с помощью Jquery

Извините за этот глупый вопрос, новичок здесь.

Я пытаюсь провести тестирование и хочу вставить имя элемента и текстовые значения ALT в объект var tagged = {}.

var $img = $('#gallery img'); вар с тегами = {};

$img.each(function(el, val) {
   
    tagged[el] = val  <-----this is the part where I'm lost
})
console.info("tagged result : ", tagged);

Моя цель - получить такой результат: {img, image1, img, image2}

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

$(function() {
    var $img = $('#gallery img'); var tagged = {};

    $img.each(function(el, val) {
   
        tagged[this.title] = val;
    })
    console.info("tagged result : ", tagged);
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div id = "gallery">
    <img title = "forest from afar" src = "https://media.cntraveler.com/photos/5eb18e42fc043ed5d9779733/16:9/w_1920%2Cc_limit/BlackForest-Germany-GettyImages-147180370.jpg">
    <img title = "rolling on the river" src = "https://media.cntraveler.com/photos/592debf3a67ebe23dff78b2f/master/w_1920%2Cc_limit/amazon-rainforest-GettyImages-137578327.jpg">
</div>

Изображения взяты отсюда: https://www.cntraveler.com/gallery/the-most-beautiful-forests-in-the-world

РЕДАКТИРОВАТЬ

Вы не можете сделать объект своим ключом, потому что он будет строковым и не будет работать для вас как ключ:

let o1 = {a: '1', b: '2'}
let o2 = {c: '3', d: '4'}

console.info({
    [o1]: 'something',
    [o2]: 'something else'
});

извините, если мой вопрос был неясен. Я пытаюсь сделать так, чтобы элемент img отображался в объекте с тегом и значениях альтернативного текста {img как элемент, картинка1 как текст ALT} img = тег элемента image1 = значение alt Я попробовал ваше предложение, и оно почти готово. результат, который я получил, был {picture1: img: image2, img), и я не смог сделать его похожим на {img: image1, img: image 2}

JayteeCollins 02.06.2024 12:43

@JayteeCollins, вы не сможете использовать объекты в качестве ключей другого объекта. Можете ли вы объяснить, зачем вам этот объект? Возможно, тогда мы могли бы решить вашу проблему более эффективно.

Lajos Arpad 02.06.2024 13:06
Ответ принят как подходящий

Объект может иметь только ОДИН элемент с одинаковым ключом. Поэтому используйте ключ, отличный от имени тега. Я использовал идентификатор, и у каждого изображения есть свой идентификатор.

var $img = $('#gallery img');
var tagged = {};
$img.each(function(idx, el) {
  tagged[el.id] = {[el.tagName]:el.alt}; 
})
console.info("tagged result : ", tagged);

// or

tagged = []
$img.each(function(idx, el) {
  tagged.push({[el.id]:el.alt}); 
})
console.info("tagged result : ", tagged);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div id = "gallery">
  <img id = "img1" src = "test1.jpg" alt = "img alt 1" />
  <img id = "img2" src = "test2.jpg" alt = "img alt 2" />
  <img id = "img3" src = "test3.jpg" alt = "img alt 3" />
 </div>

Спасибо за ваш ответ. Я попробовал ваше предложение, и возвращаемое значение — именно то, что мне нужно. Однако он не прошел через другие теги. результат был: {img: Picture1} моя цель — просмотреть каждый из них. Могу ли я узнать, как мне этого добиться?

JayteeCollins 02.06.2024 12:50

кстати, я могу легко получить желаемый результат, используя метод .push, однако мне нужно, чтобы значения находились в объекте, а не в массиве.

JayteeCollins 02.06.2024 12:52

Объект может иметь только ОДИН элемент с одинаковым ключом. Поэтому используйте ключ, отличный от имени тега. Я использовал идентификатор, и у каждого изображения есть свой идентификатор.

Godot 02.06.2024 13:56

Большое спасибо за Вашу помощь! это сработало! Я ценю вашу помощь и быстрый ответ!

JayteeCollins 03.06.2024 03:57

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

Модальный jquery и автозаполнение не работают с кнопкой обратной передачи
Отображение общей цены и размеров продукта в зависимости от количества и категории продукта в WooCommerce
Очень уникальная проблема клонирования — несколько действий клонирования на одной странице, но с разными идентификаторами
Индивидуальный макет карусели совы
Автоматическое обновление корзины WooCommerce при изменении количества товаров в корзине
Динамическое отображение определенного варианта оплаты на основе адреса электронной почты или телефона для выставления счета при оформлении заказа Woocommerce
У меня есть типы входных данных для флажка, и когда я выполняю методы удаления или получения, он работает, но страница не перезагружается
Пусть наложение div станет видимым через переход/анимацию круга клип-пути
Добавление кнопки удаления в поля динамического ввода в таблице
Включение кнопки после нажатия другой