簡體   English   中英

Backbone.js和javascript數組中的未定義值

[英]Backbone.js and javascript undefined values in array

我正在用Backbone.js進行練習,但是我認為我有一個基本的JavaScript問題。在迭代循環端獲取輸入值時,我得到了其他未定義的值。完成后,我會得到一些額外的逗號。這就像下一個數組項目在兩側都有逗號加上上一個項目的逗號一樣。我認為我在某些JS基礎知識上缺少,但是我不知道這是什么問題,所以我可以去回來學習。

<html>
<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>
  <script>
    function funk() {
      var myarr = new Array();
      var kids = document.getElementById("mydiv").children;

      for(var i = 0; i < kids.length; i++) {
        document.write(kids[i].value + "<br>");
      }    
    }
  </script>
</head>
<body>
  <button type="button" id="add">Add some</button>
  <button type="button" id="rem">Remove</button>

  <script>    
    var MyView =vBackbone.View.extend({
      tagName:'div',
      id:'mydiv',

      render: function() {
        this.$el.html("<input type='text' class='clickable' /><br>");
        return this;
      }   
    });

    var v = new MyView();
    $('body').append(v.render().el);

    $("#add").click(function() {
      $("#mydiv").append("<input type='text' class='clickable2' /><br>");
    });

    $("#rem").click(function() {
      $(".clickable2:last-of-type").remove();
    });
  </script>
  <button type="button" onclick="funk()">Submit</button>
  </body>
</html>

問題似乎是您假設mydiv元素的所有子元素都是您的輸入之一……而顯然不是這樣。

渲染后,您的mydiv如下所示:

<div id="mydiv">
   <input type='text' class='clickable' /><br>
</div>

如果單擊幾次,將得到以下信息:

<div id="mydiv">
   <input type='text' class='clickable' /><br>
   <input type='text' class='clickable' /><br>
   <input type='text' class='clickable' /><br>
</div>

請注意,#mydiv元素有六個子級(是的,br標簽計數)。 然后,您的funk()方法迭代這些子級,並將每個子級的.value()方法添加到數組中。 br標簽的.value()調用什么都不返回,所以這就是為什么數組輸出中有“空”值的原因。

如果只想在數組中輸入輸入,請使用此選擇器,而不要獲取#mydiv的子級:

$("#mydiv > input")

這將為您提供一個輸入元素數組,所有輸入元素都是#mydiv元素的直接后代。 用該數組做您將要執行的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM