未捕获TypeError:无法设置未定义的属性值'
问题描述:
我有一些问题。有一个代码未捕获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; - 这是错误
答
} else {
c = { value: b };
GLTFireEvent(c, 'change');
GLTFireEvent(c, 'change')
}
这应该工作,c是不确定的,你不能设置属性为undefined类型。
当你做var c;
你刚才把它定义为undefined,var c = {}
把c设为空对象,用空对象可以设置属性。
答
我认为这个问题可能在于这里:
else {
var c ;
c.value = b;
GLTFireEvent(c, 'change');
GLTFireEvent(c, 'change')
}
你已经宣布C作为一个简单的变量。相反,c声明为对象:
var c = {} ;
+0
这会给出错误,因为他已经在顶部声明了var,并且检查它是否未定义(此检查将不正确,因为c将是对象而不是未定义的) –
+0
我指的是最后一个else块,它将被执行只有在c未定义的情况下。在那里,问题是将c初始化为一个变量,然后尝试访问属性'value' –
请帮我解决这个问题 –
声明代码'函数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){} } –
请帮助我们来帮助您。在问题中包含所有必需的代码。 – mikedidthis