Javascript:更新对象字段的值
我有以下代码:Javascript:更新对象字段的值,javascript,javascript-objects,Javascript,Javascript Objects,我有以下代码: var view = function () { var formset_prefix = '', form_id = ''; var DOMStrings = { formset_total: 'TOTAL_FORMS', formset: '*[id$=-TOTAL_FORMS]', field: '*[id^=id_' + formset_prefix + '-]', field_idx = '*[id^=id_' + formset_p
var view = function () {
var formset_prefix = '', form_id = '';
var DOMStrings = {
formset_total: 'TOTAL_FORMS',
formset: '*[id$=-TOTAL_FORMS]',
field: '*[id^=id_' + formset_prefix + '-]',
field_idx = '*[id^=id_' + formset_prefix + form_id +'-]'
};
return {
....................
get_form_fields: function (prefix, id) {
formset_prefix = prefix;
form_id = id;
console.log(formset_prefix);
console.log(DOMStrings.field);
return document.querySelectorAll(DOMStrings.field);
}
..... }();
我一开始不知道什么是formset\u前缀
和formset\u id
,但后来我使用多个函数调用得到它们,所以我在开始时用空初始化它们
当我更新
formset\u前缀
和formset\u id值
时,我可以强制更新DOMStrings
对象属性字段和formset\u属性
吗?一个选项是使DOMStrings
成为函数并动态计算对象:
var formset_prefix = '', form_id = '';
var DOMStrings = function() {
return {
formset_total: 'TOTAL_FORMS',
formset: '*[id$=-TOTAL_FORMS]',
field: '*[id^=id_' + formset_prefix + '-]'
}
}
return {
....................
get_form_fields: function (prefix, id) {
formset_prefix = prefix;
form_id = id;
return document.querySelectorAll(DOMStrings().field);
}
..... }();
更好的是,将其与上下文分离,并将必要的参数作为参数传递:
var DOMStrings = function(prefix, id) {
return {
formset_total: 'TOTAL_FORMS',
formset: '*[id$=-TOTAL_FORMS]',
field: '*[id^=id_' + prefix + '-]'
}
}
return {
....................
get_form_fields: function (prefix, id) {
var strings = DOMStrings(prefix, id);
return document.querySelectorAll(strings.field);
}
..... }();
有多种方法可以做到这一点 您定义
视图
-表单集前缀
,表单id
,DOMStrings
的方式对于视图
是私有的。一个选项是创建函数来设置formset\u prefix
和form\u id
的值,这些函数也会注意更新DOMStrings
。例如:
var视图=函数(){
var formset_前缀=“”,
表格_id=“”;
var DOMStrings={
formset_total:“total_FORMS”,
表单集:'*[id$=-TOTAL_FORMS]',
字段:'*[id^=id_'+formset_前缀+'-]'
};
返回{
/* .................... */
获取表单字段:函数(前缀,id){
log('formset_前缀='+formset_前缀);
log('DOMStrings.field='+DOMStrings.field);
return document.queryselectoral(DOMStrings.field);
},
/*formset_前缀的Setter*/
set_formset_前缀:函数(前缀){
formset_prefix=前缀;
DOMStrings.field='*[id^=id_'+formset_前缀+'-];
归还这个;
},
/*表单id的设置器*/
设置表单id:函数(id){
形式_id=id;
归还这个;
}
/*.....*/
}
}();
/*注意:当您返回“this”时,您可以链接方法调用
现在你可以做如下的事情
*/
var fields=view.set\u formset\u前缀(“我的前缀”)
.set_form_id('my-form-id'))
.get_form_字段('my-prefix','my-form id')
生成DOMStrings
一个函数,并动态计算对象。那么对象就是函数的返回?DOMString字段属性需要多次更改。你能给我举个例子吗?考虑到他有多个简单或计算的值。下面添加了一个示例。