javascript - 在 Vanilla JS 中点击动态加载图像

标签 javascript

我正在尝试创建一个单击事件,该事件将根据单击的按钮加载特定图像。目前我的 html 是:

  <nav>
    <a class="link" href="#">1</a>
    <a class="link" href="#">2</a>
    <a class="link" href="#">3</a>
    <a class="link" href="#">4</a>
    <a class="link" href="#">5</a>
    <a class="link" href="#">6</a>
    <a class="link" href="#">7</a>
    <a class="link" href="#">8</a>
    <a class="link" href="#">9</a>
    <a class="link" href="#">10</a>
    <a class="link" href="#">11</a>
  </nav>
  <div id="image"></div>

根据链接,我希望每个都加载关联的图像:

var item = document.querySelectorAll(".link");
var itemID = [];

for (var x = 0; x < item.length; x++) {
    itemID[x] = x + 1;
  }
for (var i = 0; i < (item.length); i++) {
  img = itemID[i];
  item[i].addEventListener("click", function(){
    document.querySelector("#image").innerHTML = '<img src="' + img + '.png">';
  });
}

代码正确加载图像,但它只为每个链接加载“11.png”。链接 1 应加载 1.png,链接 2 应加载 2.png,依此类推。

我不确定我做错了什么,但我觉得我误解了如何正确使用 addEventListener ?非常欢迎任何帮助!

最佳答案

问题出在这里:img = itemID[I]; img 未声明并且是全局的,因此在每次迭代时它都会更改值,因此旧标签 img 会相应地更改 src。

尝试在每次迭代时声明一个新的 img:

let img = itemID[i];

关于javascript - 在 Vanilla JS 中点击动态加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438540/

相关文章:

javascript - 尝试添加功能来选择选项

javascript - 我想用正则表达式验证 url

javascript - 匿名函数与命名函数作为对象键值的区别

javascript - 在 JavaScript 中从一组已知的潜在 ID 创建唯一字符串 ID/键的快速方法

javascript - 使用 <a> 中的 ID 调用函数的解决方法

javascript - AngularJS - 使用 ui-router 时, View 在重新出现之前不会被清理

javascript - JS : Sort JSON array by two different properties, 维护数组中指定的顺序

javascript - 将 Base64 字符串从 AS3 返回到 Javascript。这是一个错误还是功能(或者我错了?)

javascript - 如何检查一个 DateTime 是否晚于 javascript 中的另一个

javascript - 如何修复这个 Javascript 表单验证脚本?