2016-11-28 128 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' –

相關問題