添加到数组并打印输出值 - 不打印数组值

时间:2017-03-11 06:49:41

标签: javascript arrays dom onclick event-handling

我试图找到点击的<a>标记,将其href属性保存到数组并打印出数组。

问题:数组似乎正在保存href的值,但是当我尝试使用for循环时它不会显示它。当for循环位于click事件处理程序内部时,它只显示数组内的所有值(并且我不想在那里打印for循环)。想法?

      $(document).on('click', 'a', function () {
         var url = $(this).attr('href')
         hrefTracker.push(url);

      });

    for (var i = 0; i < hrefTracker.length; i++) {
        console.log(hrefTracker[i]);
    } 

1 个答案:

答案 0 :(得分:1)

当然,您的代码无法正常运行。原因如下:

您首先分配了一个事件监听器来监听<a>元素的点击次数。事件侦听器中的代码仅在单击<a>元素时运行,但是,for循环仅在您的网页加载时运行,并且在<a>元素被点击时不会运行。你真的需要将for循环放在事件监听器中,就像这样;

&#13;
&#13;
var hrefTracker = [];
$(document).on('click', 'a', function() {
  var url = $(this).attr('href');
  hrefTracker.push(url);
  for (var i = 0; i < hrefTracker.length; i++) {
    console.log(hrefTracker[i]);
  }
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="javascript:void(0)">Some links</a>
<br>
<a href="javascript:void(1)">Some links</a>
<br>
<a href="javascript:void(2)">Some links</a>
<br>
<a href="javascript:void(3)">Some links</a>
<br>
&#13;
&#13;
&#13;

请注意,您在读取var url = $(this).attr('href')的行后面也省略了分号。