我使用此函数将标题attr附加到我表的每个tr
。该表的内容来自一个数组。这很好。但是我也有一个函数,可以手动向表中添加行。对于这些行,我得到一个例外。非常清楚,因为它们不在数组中。但是我怎样才能避免这些例外呢?我不需要为这些行添加标题。
它说:
无法读取属性' dictCanon'未定义的(...)
function postBody() {
// add title to tr
var trs = $table.find('tbody').children();
for (var i = 0; i < trs.length; i++) {
$(trs[i]).mouseover(function(e) {
index = $(e.currentTarget).data('index');
var d = (diagnosis[index].additionalParameters);
console.log('d', d);
dt = $(e.currentTarget).parent().parent().find('thead').find('th')
.eq($(e.currentTarget).data('index')).data();
//console.log(dictCanon);
if (d != undefined || d !== 'null') {
var dictCanon = diagnosis[index].additionalParameters.dictCanon;
var icd = diagnosis[index].additionalParameters.icd;
$(this).attr('title',icd + ' ' + dictCanon);
}
});
};
};
答案 0 :(得分:1)
错误“无法读取属性'dictCanon'未定义”在此表达式上被触发:
diagnosis
...这意味着您在additionalParameters
中的条目没有&&
属性。您试图保护代码免受该错误的影响,但是使用了错误的布尔运算符。使用||
代替null
,不要将for
放在引号中。我还建议您调整diagnosis
循环中的条件,以确保您在function postBody() {
// add title to tr
var trs = $table.find('tbody').children();
for (var i = 0; i < trs.length && i < diagnosis.length; i++) {
$(trs[i]).mouseover(function(e) {
var index = $(e.currentTarget).data('index'); // use `var`
var d = diagnosis[index].additionalParameters // parentheses not needed
console.log('d', d);
dt = $(e.currentTarget).parent().parent().find('thead').find('th')
.eq(index).data(); // you have `index`, use it
//console.log(dictCanon);
if (d !== undefined && d !== null) { // <--- changed!
var dictCanon = d.dictCanon; // <-- you have `d`, use it
var icd = d.icd; // <-- idem
$(this).attr('title',icd + ' ' + dictCanon);
}
});
};
};
中有必要的条目:
"private_key": "-----BEGIN PRIVATE KEY-----veryLongKey---END PRIVATE KEY-----\n",
"client_email": "randomemail@appspot.gserviceaccount.com",
另请注意我做的其他一些更改...请参阅代码中的注释。