Я создал цикл forEach, который собирает URL-адреса 10 картинок, и я хочу добавить их к тому, что у меня есть в моем html в строке 33. Я должен отображать гифки на странице. В настоящее время я получаю список URL-адресов. Есть ли способ, которым я могу иметь список изображений на странице, сохраняя большую часть кода, который у меня есть в настоящее время? Начиная со строки 55 находится мой цикл forEach, в котором я пытаюсь добавить дочерний элемент.
const button = document.querySelector("#search-btn");
button.addEventListener("click", (event) => {
event.preventDefault();
const giffTitle = document.querySelector("#giffTitle").value;
axios;
const giffSection = document.querySelector(".giffs");
const giffList = document.querySelector(".list");
axios
.get(
`https://api.giphy.com/v1/gifs/search?api_key=iVwoS0brONsmkA6sWVqHgJ9D7g2WYDmv&q=${giffTitle}&limit=10&offset=0&rating=g&lang=en`
)
.then((res) => {
const giff = res.data;
// const giffUrl = giff.data[0].embed_url;
const giffUrl = giff.data;
console.info(giffUrl);
giffUrl.forEach(function(singleGiff) {
let img = document.createElement("li");
img.textContent = singleGiff.embed_url;
giffList.appendChild(img);
console.info(singleGiff.embed_url);
});
});
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/axios/0.26.0/axios.min.js" integrity = "sha512-bPh3uwgU5qEMipS/VOmRqynnMXGGSRv+72H/N260MQeXZIK4PG48401Bsby9Nq5P5fz7hy5UGNmC/W1Z51h2GQ= = " crossorigin = "anonymous" referrerpolicy = "no-referrer"></script>
<h1>Giffs</h1>
<form action = "">
<label for = "">Search</label>
<input type = "text" id = "giffTitle" />
<button id = "search-btn">Search</button>
</form>
<iframe id = "iframe" src = "${giffUrl}" width = "480" height = "270" frameborder = "0" class = "giphy-embed" allowfullscreen></iframe>
<section class = "giffs"></section>
<ul class = "list"></ul>
Я отредактировал до конца:
giffUrl.forEach(function (singleGiff) {
let img = document.createElement("img");
img.src = singleGiff.embed_url;
let list = document.createElement("li");
list.appendChild(img);
giffList.appendChild(list);
console.info(singleGiff.embed_url);
});
и вывод представляет собой список сломанных изображений.
Кажется, он возвращает список неработающих изображений.
Значение embed_url
приводит к HTML-страница, подобному https://giphy.com/embed/3o85xBA2qKZsoe7Cy4
— вы, конечно, не можете указать HTML-документ в качестве «источника» изображения. Вам нужно будет выбрать один из URL-адресов, которые напрямую ссылаются на изображение (если они вообще есть, я не могу сказать наверняка).
Что-то вроде этого должно работать:
giffUrl.forEach(function (singleGiff) {
let img = document.createElement("img");
img.src = singleGiff.embed_url;
let listElement = document.createElement("li");
listElement.appendChild(img);
giffList.appendChild(listElement);
console.info(singleGiff.embed_url);
});
Вы можете легко добавить изображение с помощью Литералы шаблонов и HTML DOM метод insertAdjacentHTML(). Я надеюсь, что приведенный ниже фрагмент вам очень поможет.
Ссылка на ссылку:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literalshttps://www.w3schools.com/jsref/met_node_insertadjacenthtml.asp
const button = document.querySelector("#search-btn");
button.addEventListener("click", (event) => {
event.preventDefault();
const giffTitle = document.querySelector("#giffTitle").value;
axios;
const giffSection = document.querySelector(".giffs");
const giffList = document.querySelector(".list");
axios.get(
`https://api.giphy.com/v1/gifs/search?api_key=iVwoS0brONsmkA6sWVqHgJ9D7g2WYDmv&q=${giffTitle}&limit=10&offset=0&rating=g&lang=en`
)
.then((res) => {
const giff = res.data;
// const giffUrl = giff.data[0].embed_url;
const giffUrl = giff.data;
// console.info(giffUrl);
giffList.innerHTML = ''; // empty <ul> before listing
giffUrl.forEach(function (singleGiff) {
console.info(singleGiff)
giffList.insertAdjacentHTML('beforeend', `
<li>
<img src = "${singleGiff.images.downsized.url}">
</li>
`)
});
});
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/axios/0.26.0/axios.min.js"
integrity = "sha512-bPh3uwgU5qEMipS/VOmRqynnMXGGSRv+72H/N260MQeXZIK4PG48401Bsby9Nq5P5fz7hy5UGNmC/W1Z51h2GQ= = "
crossorigin = "anonymous" referrerpolicy = "no-referrer"></script>
<h1>Giffs</h1>
<form action = "">
<label for = "">Search</label>
<input type = "text" id = "giffTitle" />
<button id = "search-btn">Search</button>
</form>
<section class = "giffs"></section>
<ul class = "list"></ul>
Вам нужны оба новых элемента li
и img
. И если вы хотите представить сам GIF, вы должны установить атрибут src
изображения на singleGiff.images.downsized.url
.
const button = document.querySelector("#search-btn");
button.addEventListener("click", (event) => {
event.preventDefault();
const giffTitle = document.querySelector("#giffTitle").value;
axios;
const giffSection = document.querySelector(".giffs");
const giffList = document.querySelector(".list");
axios
.get(
`https://api.giphy.com/v1/gifs/search?api_key=iVwoS0brONsmkA6sWVqHgJ9D7g2WYDmv&q=${giffTitle}&limit=10&offset=0&rating=g&lang=en`
)
.then((res) => {
const giff = res.data;
// const giffUrl = giff.data[0].embed_url;
const giffUrl = giff.data;
//console.info(giffUrl);
giffUrl.forEach(function(singleGiff) {
let li = document.createElement("li");
let img = document.createElement("img");
img.src = singleGiff.images.downsized.url;
li.appendChild(img);
giffList.appendChild(li);
});
});
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/axios/0.26.0/axios.min.js" integrity = "sha512-bPh3uwgU5qEMipS/VOmRqynnMXGGSRv+72H/N260MQeXZIK4PG48401Bsby9Nq5P5fz7hy5UGNmC/W1Z51h2GQ= = " crossorigin = "anonymous" referrerpolicy = "no-referrer"></script>
<h1>Giffs</h1>
<form action = "">
<label for = "">Search</label>
<input type = "text" id = "giffTitle" />
<button id = "search-btn">Search</button>
</form>
<iframe id = "iframe" src = "${giffUrl}" width = "480" height = "270" frameborder = "0" class = "giphy-embed" allowfullscreen></iframe>
<section class = "giffs"></section>
<ul class = "list"></ul>
Не создавайте элемент
li
и назовите егоimg
... Создайте новый элементimg
и установите его атрибутsrc
на URL вашего изображения. Затем добавьте это к вновь созданномуli
, а затемli
к элементу списка.