把obj推到数组

时间:2018-04-04 07:55:52

标签: javascript jquery count arr

我创建了一系列对象,并将它们分组为1个项目

我试图创建这些对象的数组,但我的代码存在两个小问题。

  1. eventName没有像我想象的那样增加,当我将那部分隔离出来时它就会发生,并且

  2. 它识别出正确的信息,但是当我把它推到数组时,它总是在[0] ...只是想知道我做错了什么?

  3. 我希望它没关系,如果我只是使用我创建的小提琴,而不是复制粘贴到处。

    $(document).ready(function() {
      showBreadCrumb();
    });
    
    function showBreadCrumb() {
      $("a").click(function() {
        let idzName = ($(this).attr('id'));
        let classzName = ($(this).attr('class'));
        let clickRecord = $(this).data('clicked', true);
        let count = 0;
        let eventName = makeName();
        let eventObject = makeEventObject(eventName, idzName, classzName);
        let eList = makeEventList(eventObject);
    
    
        function makeName() {
    
          let vName = "event" + (++count);
          let countO = new nameCount(vName, count);
          //console.log(countO,vName);
    
          return vName;
        }
        eventName = makeName();
    
    
        function nameCount(vName, count) {
          this.eName = vName;
          this.counter = count;
        }
    
        function makeEventObject(eventName, idzName, classzName) {
    
          function eventDetails(eventName, idzName, classzName) {
            this.eventName = eventName;
            this.idzName = idzName;
            this.classzName = classzName;
          }
          let eventObject = new eventDetails(eventName, idzName, classzName);
          // console.log(eventObject);
          return eventObject;
        }
      })
    
      function makeEventList(eventObject) {
        let eventList = [];
        eventList.push(eventObject);
        console.log(eventList);
      }
    }
    

    Fiddle URL

2 个答案:

答案 0 :(得分:0)

我不知道为什么所有这些有重叠的内在功能, 但是如果你想将所有点击事件存储在一个数组中,你必须在你的功能之外对你的数组进行十分转换,以便重新启动它,同样的事情可以用于反击。

见下面的工作片段: (Ps删除了无用的方法+ decalre点击范围之外的其他人(为什么每次点击都在内存中声明函数..)



$(document).ready(function() {
  eventList = [];
  count = 0;
  showBreadCrumb();
});

function showBreadCrumb() {
  $("a").click(function() {
    let idzName = ($(this).attr('id'));
    let classzName = ($(this).attr('class'));
    let clickRecord = $(this).data('clicked', true);
    let eventName = makeName();
    let eventObject = makeEventObject(eventName, idzName, classzName);
    let eList = makeEventList(eventObject);
  });
}


function makeEventObject(eventName, idzName, classzName) {

  function eventDetails(eventName, idzName, classzName) {
    this.eventName = eventName;
    this.idzName = idzName;
    this.classzName = classzName;
  }
  let eventObject = new eventDetails(eventName, idzName, classzName);
  // console.log(eventObject);
  return eventObject;
}

function makeName() {

  let vName = "event" + (++count);
  return vName;
}

function makeEventList(eventObject) {
  eventList.push(eventObject);
  $(".as-console").html("");
  console.log(eventList);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="breadcrumb">Start @ Home</div>

<div class="menubar">
  <ul id="navigation_links">
    <li><a href="#" id="A" class="L1">Page A</a></li>
    <li><a href="#" id="B" class="L1">Page B</a></li>
    <li><a href="#" id="C" class="L1">Page C</a></li>
    <li><a href="#" id="D" class="L1">Page D</a></li>
    <li><a href="#" id="E" class="L1">Page E</a></li>
    <li><a href="#" id="F" class="L1">Page F</a></li>
    <li><a href="#" id="G" class="L1">Page G</a></li>
    <li><a href="#" id="H" class="L1">Page H</a></li>
  </ul>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

array始终仅使用一个元素的唯一错误是因为代码 - let eventList = [];makeEventList()方法内的每次点击时初始化。< / p>

解决方案:将let eventList = [];移至顶部。

Demo

相关问题