javascript - 尝试使用函数通过 Javascript 动态填充 HTML 表

标签 javascript ajax

我有一个可以用 javascript 和 Ajax 很好地填充的表,但现在我需要添加复选框,并让它们在以这种方式保存在数据库中时显示已选中(1 表示选中,0 表示未选中)。而不是写

 var aChecked='';
 aChecked += '<input type="checkbox" id="amS"'+(data.amS == 1 ? 'checked="checked"':'')+'/>';

对于每个复选框(大约有 24 个),我尝试使用修改后的函数,用于查看是否选中了表中未列出的其他复选框。其功能是:

function Checked(){
this.update();
}

位于我的 $.ajax 之上,这是我的 success(function(data) 部分。

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' ]]

两者都会引发语法错误。有人知道我怎样才能做到这一点吗?谢谢

最佳答案

改变

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" ... >'

请检查您的代码

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;

在这种情况下,“this”意味着对您的更新函数进行“var 检查”

“data[this]”确实是错误的访问,

为什么这意味着对象(实例)而不是字符串(对象的键)

关于javascript - 尝试使用函数通过 Javascript 动态填充 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063070/

相关文章:

javascript - jQuery 验证 addClassRules 返回 NaN 而不是最大值

JavaScript - 如何在文本框的右侧放置星号?

javascript - 单击下拉菜单时如何动态添加输入类型

php - 学习如何通过 CodeIgniter 使用 AJAX

ajax - WebKit 是那些实现即将到来的 x-domain XMLHttpRequest 功能的浏览器之一吗?

Javascript 将另一个参数插入函数

javascript - 使用 Mapbox GL JS 计算出现次数(geojson 属性)

php - 使用 AJAX 从 <select> 下拉列表中检索值?

jquery - 如何将 jsonutil 与 Coldfusion7 和 jquery ajax 一起使用?

javascript - 无法在 Ajax 包装器上的自定义成功回调内部进行重定向