Извините за этот глупый вопрос, новичок здесь.
Я пытаюсь провести тестирование и хочу вставить имя элемента и текстовые значения 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}

Вы намерены создать объект пар ключ-значение, где значением является элемент изображения. Мне неясно, какими должны быть клавиши, но в принципе вы можете использовать любую клавишу, какую захотите, поскольку у вас есть четкое представление о том, какого конечного результата вы хотите достичь. Ваш исходный код создал индекс для изображений, и этот индекс использовался в качестве ключа. В моем примере каждое изображение имеет заголовок, и я использую его в качестве ключа.
$(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'
});@JayteeCollins, вы не сможете использовать объекты в качестве ключей другого объекта. Можете ли вы объяснить, зачем вам этот объект? Возможно, тогда мы могли бы решить вашу проблему более эффективно.
Объект может иметь только ОДИН элемент с одинаковым ключом. Поэтому используйте ключ, отличный от имени тега. Я использовал идентификатор, и у каждого изображения есть свой идентификатор.
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} моя цель — просмотреть каждый из них. Могу ли я узнать, как мне этого добиться?
кстати, я могу легко получить желаемый результат, используя метод .push, однако мне нужно, чтобы значения находились в объекте, а не в массиве.
Объект может иметь только ОДИН элемент с одинаковым ключом. Поэтому используйте ключ, отличный от имени тега. Я использовал идентификатор, и у каждого изображения есть свой идентификатор.
Большое спасибо за Вашу помощь! это сработало! Я ценю вашу помощь и быстрый ответ!
извините, если мой вопрос был неясен. Я пытаюсь сделать так, чтобы элемент img отображался в объекте с тегом и значениях альтернативного текста {img как элемент, картинка1 как текст ALT} img = тег элемента image1 = значение alt Я попробовал ваше предложение, и оно почти готово. результат, который я получил, был {picture1: img: image2, img), и я не смог сделать его похожим на {img: image1, img: image 2}