[英]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.