我有一个用javascript和Ajax填充的表格,但现在我需要添加复选框并让它们显示如果以这种方式保存在数据库中(1表示检查0表示没有)。而不是写
var aChecked='';
aChecked += '<input type="checkbox" id="amS"'+(data.amS == 1 ? 'checked="checked"':'')+'/>';
对于每个复选框(大约有24个)我试图使用一个修改过的函数来查看表中没有其他复选框是否被选中。功能是:
function Checked(){
this.update();
}
高于我的$ .ajax,这是我的成功(功能(数据)部分。
Checked.prototype.list = ['am','fol','tich','book','neb','ster','byte','ing'];
Checked.prototype.update = function(){
for( var i = 0 ; i < this.list.length ; i++ ){
var check = this.list[i];
this[ check + 'S' ] += '<input type="checkbox" id="'+this[ check + 'S' ]+'"'+(data.this[ check + 'S' ] == 1 ? 'checked="checked"':'')+'/>';//$("#" + check ).is(":checked") ? 1 : 0;
}// end of for loop
}
var checks = new Checked();
然后我可以在我的附加语句中引用它,如此
<td>'+checks.amS+'</td>
问题是当我尝试运行它时出现此错误:
TypeError: data.this is undefined
我不确定我是如何写这个以使其工作的,而不是必须写出来并违反DRY原则。我试过了
data.(this[ check + 'S' ])
和
data.[this[ check + 'S' ]]
这两个都会引发语法错误。谁知道我怎么能做到这一点?感谢
答案 0 :(得分:1)
更改
this[ check + 'S' ] += '<input type="checkbox" ... >'
// this[ check + 'S' ] = this[ check + 'S' ] + '<input type="checkbox" ... >'
// this[ check + 'S' ] = undefined + '<input type="checkbox" ... >'
到
this[ check + 'S' ] = '<input type="checkbox" ... >'
检查您的代码PLZ
this[ check + 'S' ] =
'<input type="checkbox" id="'+this[ check + 'S' ]+'"' // this[ check + 'S' ] is undefined
+(data.this[ check + 'S' ] == 1 ? 'checked="checked"':'')+'/>'; // this[ check + 'S' ] is undefined
//$("#" + check ).is(":checked") ? 1 : 0;
到
this[ check + 'S' ] =
'<input type="checkbox" id="'+check + 'S'+'"' // modified
+(data[ check + 'S' ] == 1 ? 'checked="checked"':'')+'/>'; // modified
//$("#" + check ).is(":checked") ? 1 : 0;
&#34;这&#34;意味着&#34; var检查&#34;在这种情况下你的更新功能
&#34;数据[此]&#34;是非常错误的访问,
为什么这意味着对象(实例)不是字符串(对象&#39; s键)