2016-11-28 93 views
0

我有一些问题。有一个代码未捕获TypeError:无法设置未定义的属性值'

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; - 这是错误

+0

请帮我解决这个问题 –

+0

声明代码'函数GLTFireEvent(A,B){ 尝试{ 如果(document.createEvent){VAR C =文件。 createEvent( “HTMLEvents”); c.initEvent(b,true,true); (c) a.dispatchEvent(c) } else { var c = document.createEventObject(); a.fireEvent('on'+ b,c) } } catch(e){} } –

+0

请帮助我们来帮助您。在问题中包含所有必需的代码。 – mikedidthis

回答

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

这应该工作,c是不确定的,你不能设置属性为undefined类型。

当你做var c;你刚才把它定义为undefined,var c = {}把c设为空对象,用空对象可以设置属性。

1

我认为这个问题可能在于这里:

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

你已经宣布C作为一个简单的变量。相反,c声明为对象:

var c = {} ; 
+0

这会给出错误,因为他已经在顶部声明了var,并且检查它是否未定义(此检查将不正确,因为c将是对象而不是未定义的) –

+0

我指的是最后一个else块,它将被执行只有在c未定义的情况下。在那里,问题是将c初始化为一个变量,然后尝试访问属性'value' –

相关问题