未捕获的TypeError:无法设置undefined的属性“value”

时间:2016-11-28 10:57:22

标签: javascript

我有一些问题。有一个代码

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 个答案:

答案 0 :(得分:1)

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

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

您已将c声明为简单变量。而是将c声明为对象:

   var c = {} ;

答案 1 :(得分:0)

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

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

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