我遇到了一个未定义parentNode的TypeError。如何检查parentNode是否未定义?
这是我的方法:
function updateImages(myRow) {
var rowInputs = j$(myRow).find('input[type="text"]');
var contact = (j$(rowInputs[0]).val());
var user = (j$(rowInputs[1]).val());
var account = (j$(rowInputs[2]).val());
if (contact !== '') {
j$(rowInputs[0].parentNode).find('img').show();
j$(rowInputs[1].parentNode).find('img').hide();
j$(rowInputs[2].parentNode).find('img').hide();
}
else if (user !== '') {
console.log('user is not blank');
console.log(j$(rowInputs[1]));
console.log(j$(rowInputs[1].parentNode));
j$(rowInputs[0].parentNode).find('img').hide();
j$(rowInputs[1].parentNode).find('img').show();
j$(rowInputs[2].parentNode).find('img').hide();
}
else if (account !== '') {
j$(rowInputs[0].parentNode).find('img').hide();
j$(rowInputs[1].parentNode).find('img').hide();
j$(rowInputs[2].parentNode).find('img').show();
}
if (account !== '' && contact !== '') {
j$(rowInputs[0].parentNode).find('img').show();
j$(rowInputs[1].parentNode).find('img').hide();
j$(rowInputs[2].parentNode).find('img').hide();
}
}
</script>
我需要检查rowInputs [1] .parentNode的parentNode是否未定义,以及rowInputs [2] .parentNode的parentNode是否未定义。
感谢您的帮助。 问候。
答案 0 :(得分:0)
这是一个建议:
function updateImages(myRow) {
var rowInputs = j$(myRow).find('input[type="text"]');
var contact = rowInputs.eq(0);
var user = rowInputs.eq(1);
var account = rowInputs.eq(2);
var cont = contact.parent().find('img');
var usr = user.parent().find('img');
var aco = account.parent().find('img');
if (contact.val() !== '') {
cont.show();
usr.hide();
aco.hide();
}
else if (user.val() !== '') {
console.log('user is not blank');
console.log(user);
console.log(user.parent());
cont.hide();
usr.show();
aco.hide();
}
else if (acontount.val() !== '') {
cont.hide();
usr.hide();
aco.show();
}
/* This is redundant same as first if
if (acontount.val() !== '' && contact.val() !== '') {
j$(rowInputs[0]).parent().find('img').show();
j$(rowInputs[1]).parent().find('img').hide();
j$(rowInputs[2]).parent().find('img').hide();
}
*/
}
您的代码假定每行总有3个元素,因此可能会抛出错误。如果您使用.eq(),则始终会获得jQuery对象而不会出现undefined
错误。如果你发布你的html,我们可以找到一种更好的方法来优化代码。