1

我收到一个 TypeError ,其中 parentNode 未定义。如何检查 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 是否未定义。

谢谢你的帮助。问候。

4

1 回答 1

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,也许我们可以找到更好的方法来优化代码。

于 2013-09-04T15:33:44.553 回答