Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:更新对象字段的值_Javascript_Javascript Objects - Fatal编程技术网

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字段属性需要多次更改。你能给我举个例子吗?考虑到他有多个简单或计算的值。下面添加了一个示例。