如何向javascript/jQuery对象添加变量?
问题很简单。我得到了一个解析表行的对象。代码如下:如何向javascript/jQuery对象添加变量?,javascript,Javascript,问题很简单。我得到了一个解析表行的对象。代码如下: var erg = []; $("tr").each(function (index) { var row = {}; var test = $(this).children(); row['column1'] = test[0].textContent; row['column2'] = test[1].textContent; row['column3
var erg = [];
$("tr").each(function (index) {
var row = {};
var test = $(this).children();
row['column1'] = test[0].textContent;
row['column2'] = test[1].textContent;
row['column3'] = test[2].textContent;
row['column4'] = test[3].textContent;
row['column5'] = test[4].textContent;
row['column6'] = test[5].textContent;
row['column7'] = test[6].textContent;
erg.push(row);
});
我想传递一个变量var my_variable=“blabla”
,而不会破坏对象的结构。那么我怎么能把这个物体带到这样的结构中呢
Object{my_variable="my_variable_value"}, Object{my_table=[Object{...}, Object{...}]} //all the objects of the table
$.extend({},erg,my_变量)代码>只是把我的对象弄乱了
我希望它在这个结构中,这样我就可以将它作为json传递给我的php脚本,并轻松地过滤我的变量。有任何提示、链接、代码片段吗?:) 您可以定义一个类并将所需的变量添加到其原型中。
首先,您需要一个小实用程序来实现这一点:
function createSharedStruct() {
// Define a shared structure
var Struct = function() {};
// Define a method to define a shared variable
Struct.share = function(variable, value) {
Struct.prototype[variable] = value;
};
return Struct;
}
然后,更新您的代码:
// Create the shared structure
var rowClass = createSharedStruct();
// Register your shared variables
rowClass.share('my_variable', 'my_variable_value');
var erg = [];
$("tr").each(function (index) {
var test = $(this).children();
// Create a new row
var row = new rowClass();
row['column1'] = test[0].textContent;
row['column2'] = test[1].textContent;
row['column3'] = test[2].textContent;
row['column4'] = test[3].textContent;
row['column5'] = test[4].textContent;
row['column6'] = test[5].textContent;
row['column7'] = test[6].textContent;
erg.push(row);
});
// No matter when you share a variable, it will be defined among
// all instances of the same struct.
rowClass.share('my_other_var', 42);
现在您可以访问共享变量:
console.log(erg[0].my_other_variable); // 42
console.log(erg[1].my_other_variable); // 42
.您可以定义一个类并将所需的变量添加到其原型中。
首先,您需要一个小实用程序来实现这一点:
function createSharedStruct() {
// Define a shared structure
var Struct = function() {};
// Define a method to define a shared variable
Struct.share = function(variable, value) {
Struct.prototype[variable] = value;
};
return Struct;
}
然后,更新您的代码:
// Create the shared structure
var rowClass = createSharedStruct();
// Register your shared variables
rowClass.share('my_variable', 'my_variable_value');
var erg = [];
$("tr").each(function (index) {
var test = $(this).children();
// Create a new row
var row = new rowClass();
row['column1'] = test[0].textContent;
row['column2'] = test[1].textContent;
row['column3'] = test[2].textContent;
row['column4'] = test[3].textContent;
row['column5'] = test[4].textContent;
row['column6'] = test[5].textContent;
row['column7'] = test[6].textContent;
erg.push(row);
});
// No matter when you share a variable, it will be defined among
// all instances of the same struct.
rowClass.share('my_other_var', 42);
现在您可以访问共享变量:
console.log(erg[0].my_other_variable); // 42
console.log(erg[1].my_other_variable); // 42
.我不确定您希望在哪一点添加该属性,但您可以简单地用另一个对象包装数组,然后将属性添加到同一个对象中
这基本上就是Florent的答案,但使用对象文字而不是“类”和原型:
// (your current code)
var wrapper = {
my_variable: 'something',
my_table: erg
};
我不确定您想在哪一点添加它,但您可以简单地用另一个对象包装您的数组,并将您的属性添加到同一个对象
这基本上就是Florent的答案,但使用对象文字而不是“类”和原型:
// (your current code)
var wrapper = {
my_variable: 'something',
my_table: erg
};
哇!谢谢你的回答!但我只是很愚蠢,没有处理对象或JSON的经验。我的问题有一个简单的解决方案:var json={table:erg,variable:my_variable};我的答案被否决有什么正当的理由吗?也许是因为你把解决方案复杂化了(顺便说一句,不是我)。哦,对不起。我把你的答案投了赞成票,因为在我阅读的那一刻,它是唯一的答案。但后来我读到了另一个更简单的解决方案,我也对这个方案投了更高的票。但你只能投一个答案,我不知道。但我认为另一个答案应该首先出现,因为它是最好、最简单的解决方案。抱歉:(我同意这太复杂了,我会按照你的建议去做的。我原以为这是OP所期望的。哇!谢谢你的回答!但我很愚蠢,在处理对象或json方面没有经验。我的问题有一个简单的解决方案:var json={table:erg,variable:my_variable};我的答案被否决有什么正当理由吗?也许是因为你把解决方案复杂化了(顺便说一句,不是我)。哦,对不起。我投票赞成你的答案,因为当时我正在阅读它,它是唯一的一个。但后来我读了另一个,更简单的解决方案,我也投票赞成。但你只能投票赞成一个答案,我不知道。但我认为另一个答案应该首先出现,因为它是最好和最简单的解决方案。对不起:(好吧,我同意这太复杂了,我会按照你的建议去做的。我以为这是OP期望的。嗯,这是一个比我更干净的方法。呵呵。是的,我几分钟前就知道了。我现在觉得很傻:D,真的那么简单。嗯,这是一个比我更干净的方法。呵呵,是的,我几分钟前就知道了。我现在觉得自己很愚蠢:D真的很简单。