[英]Creating Object Key with jquery.each() loop
我正在javascript中創建一個名稱空間來遍歷表單並創建一個對象。 調用函數的目的是遍歷所有特定的表單類型,並構造一個具有鍵的對象,該鍵是html輸入的名稱,值是其當前值。 但是,它不斷返回undefined。
任何幫助將不勝感激:
get_form_data.radio = function(container) { //will return the value
var data = {}; //function data object to return
container.find('input[type="radio"]:checked').each(function() {
var current_object = {}; //loop temporary object
var current = $(this); //current element
var current_key = current.attr('name'); //property category
var current_value = current.attr('value'); //value to update the database with
current_object[current_key] = current_value; //temporary object
console.log(current_object.length); //RETURNS UNDEFINED
$.extend(data, current_object);
});
console.log(data.length); //returns undefined
return data;
}
你想得到var current_object = {};
聲明退出.each()
調用。 .each()
函數的每次迭代.each()
重新聲明它,並有效地刪除它。 並忘記$.extend()
。
var data = {};
container.find('input[type="radio"]:checked').each(function() {
data[this.name] = this.value;
});
return data;
通過快速瀏覽當前代碼未經測試。
您需要指定鍵和索引值,如thtat:
array.each(function(index, value) {
alert(index + ': ' + value);
});
在你的情況下:
get_form_data.radio = function(container) { //will return the value
var data = {}; //function data object to return
container.find('input[type="radio"]:checked').each(function(index,value) {
var current_object = {}; //loop temporary object
var current = value; //current element
var current_key = current.attr('name'); //property category
var current_value = current.attr('value'); //value to update the database with
current_object[current_key] = current_value; //temporary object
console.log(current_object.length); //RETURNS UNDEFINED
$.extend(data, current_object);
});
console.log(data.length); //returns undefined
return data;
}
通過查看全局范圍解決了問題。 看起來上面的代碼工作但是我的全局命名空間在每個循環中混淆current = $(this)
和this.data,它是表單數據的全局對象。
繼承我的form_submit命名空間:
this.data = {};
this.property_status = function() {
var property_status = {};
this.container.children('form').each(function() {
var current = $(this);
property_status[current.attr('data-property_id')] = get_form_data.radio(current);
});
$.extend(this.data, property_status);
};
和get_form_data命名空間:
get_form_data.radio = function(container) {//will return the value
var form_data = {};//function data object to return
container.find('input[type="radio"]:checked').each(function() {
form_data[this.name] = this.value;
});
return form_data;
}
關於優化這個的任何建議?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.