使用循环和闭包设置元素的innerHTML

时间:2016-03-08 22:58:56

标签: javascript closures

我试图用JavaScript闭包来解决一个简单的练习,以便了解它们是如何工作的,并且遇到了一个可能只有一个简单答案的错误,或者可能与闭包本身无关。

我使用的html标记是:

vis/vis.c

,JavaScript是:

<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<ol>
  <li class="track">Test Song</li>
  <li class="track">Test Song</li>
  <li class="track">Test Song</li> 
  <li class="track">Test Song</li>
  <li class="track">Test Song</li>
  <li class="track">Test Song</li>
  <li class="track">Test Song</li>
  <li class="track">Test Song</li>
  <li class="track">Test Song</li>

</ol>
  <p>Now playing track <span id="number"></span></p>
</body>
</html>

我点击的输出正在成为[对象MouseEvent] 什么时候应该点击实际的轨道。 我不确定是什么造成的,这里有一个fsfiddle:   https://jsbin.com/gujomef/edit?html,js,output

1 个答案:

答案 0 :(得分:0)

如果您只想要单击的轨道号,可以使用.each()循环在jQuery中为您创建闭包。

$(function(){

$('.track').each(function(i, e){
  $(e).click(function(){
    $('#number').text(i);
  });
});

});