2015-05-11 59 views
2

我正在練習Backbone.js,但我想我有一個基本的JavaScript問題。我在迭代循環結束獲取輸入值時得到了額外的未定義值。如果我做myarr。推(孩子[我]。值),並提醒它,當它完成時,我得到一些額外的逗號。它就像下一個數組項目有雙方逗號加上以前項目的逗號。我想我缺少一些基本的js,但我不知道什麼是問題,所以我可以回去學習它。Backbone.js和javascript未定義的數組中的值

<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> 
+0

這可能有助於提出一個問題 - 你試圖做的事不清楚。另外,請提供您存儲在陣列中的數據的示例。 –

+0

@AlienBishop我想獲得所有輸入字段的值,並且讓我們說使用它們進行驗證。如果我做myarr.push(kids [i] .value),我得到value1,value2,value3,注意其他逗號。他們來自哪裏? – admir

回答

0

問題似乎是,你認爲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元素。用那個陣列來做你會的。