开发者问题收集

未捕获的类型错误:无法设置未定义的属性“值”

2016-11-28
1525

我遇到了一些问题。代码为

function doGoogleLanguageTranslator(a) {
    if (a.value) a = a.value;
    if (a == '') return;
    var b = a.split('|')[1];
    var c;
    var d = document.getElementsByTagName('select');
    for (var i = 0; i < d.length; i++)
        if (d[i].className == 'goog-te-combo') c = d[i];

    if (typeof(c) !== 'undefined') {

        if (document.getElementById('google_language_translator') == null || document.getElementById('google_language_translator').innerHTML.length == 0 || c.length == 0 || c.innerHTML.length == 0) {
            setTimeout(function() {
                doGoogleLanguageTranslator(a)
            }, 500)
        } else {
            c.value = b;
            GLTFireEvent(c, 'change');
            GLTFireEvent(c, 'change')
        }


    }  else {
        if (document.getElementById('google_language_translator') == null || document.getElementById('google_language_translator').innerHTML.length == 0) {
            setTimeout(function() {
                doGoogleLanguageTranslator(a)
            }, 500)
        } else {
           var  c ;
            c.value = b;
            GLTFireEvent(c, 'change');
            GLTFireEvent(c, 'change')
        }
    }
 }

我遇到了错误。程序无法理解声明的 c。c.value = b; - 这是错误

2个回答

我认为问题可能出在这里:

    else {
   var  c ;
    c.value = b;
    GLTFireEvent(c, 'change');
    GLTFireEvent(c, 'change')
}

您已将 c 声明为简单变量。相反,请将 c 声明为对象:

   var c = {} ;
Amoolya S Kumar
2016-11-28
} else {
    c = { value: b };
    GLTFireEvent(c, 'change');
    GLTFireEvent(c, 'change')
}

这应该可行,c 未定义,并且您不能将属性设置为未定义的类型。

当您执行 var c; 时,您只是将其设置为未定义, var c = { 将 c 设置为空对象,使用空对象您可以设置属性。

Yan Mayatskiy
2016-11-28