javascript - 我可以在循环中更改索引吗?

标签 javascript jquery for-loop each html5-audio

我有一系列<div>每个都有一个颜色名称的 id,例如 <div id="white"></div>加载一个音频文件,并用单击 div 时从 ajax 调用收集的艺术家和轨道标题填充几个标题标签

HTML

<audio id="song" preload="none">
</audio>
<div id="white"></div>
<div id="pink"></div>
<div id="play" onclick="document.getElementById('song').play()"></div>
<div>
  <h2 id="title"></h2>
  <h3 id="artist"></h3>
</div>`  

Javascript

$("#white").click(function(){
    $("#song").attr('src',data[0].songSrc);
    $("h2").html(data[0].title)
    $("h3").html(data[0].artist)
}); 

$("#pink").click(function(){
    $("#song").attr('src',data[1].songSrc);
    $("h2").html(data[1].title)
    $("h3").html(data[1].artist)
}); 

我可以使用 for 循环或 $.each而不是重复相同的代码并手动更改 19 个项目中每个项目的 div id 和项目索引?

这是我正在解决这个问题的垃圾箱:jsbin

相关 HTML:

<div id="play" onclick="document.getElementById('song').play()"></div>

最佳答案

为什么不给所有颜色一个公共(public)类,然后将对象索引存储在数据属性中。然后您只需单击一次即可填充正确的数据。像这样的事情:

$("div.color").click(function(){
  var index = $(this).data('src');
  $("#song").attr('src',data[index].songSrc);
  $("h2").html(data[index].title);
  $("h3").html(data[index].artist);
}); 
<div id="white" class="color" data-src="0"></div>
<div id="pink" class="color" data-src="1"></div>

关于javascript - 我可以在循环中更改索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111888/

相关文章:

java - Android 应用程序无异常退出

javascript - js 的 linq : how to get cartesian product of multiple arrays

javascript - 选择带空格的父级高度 :nowrap

javascript - 如何使用vue获取所选<td>的文本?

php - Foreach 中的 For 循环

c# - 在随机数组中搜索特定值

javascript - Node JS函数执行顺序

javascript - 从外部文件访问 jquery 附加元素

javascript - 循环遍历数字和字母数组并仅提取数字?

javascript - 选择 JS 按关键字搜索