2017-02-28 89 views
1
無法讀取的未定義的屬性「數據」

在Object.city無法讀取的未定義的屬性「數據」cities.statename.data產生錯誤的Object.city

問題是我打電話狀態動態,當我寫城市.UP.data它顯示正確的結果,並且當我添加cities.statename.data這裏狀態名稱動態生成時,我選擇任何狀態。

person.details.getInfo.city($(this).val()); city : function (statename)

<!DOCTYPE html> 
    <html> 
    <head> 
    <script src="https:ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
     <title></title> 
     <script type="text/javascript"> 
     var states = ['UP','MP','MH','DL' ]; 
     var cities = { 
        "UP":{ 
        data:['allahabad','kanpur','luckhnow'] 
        }, 
         "MP":{ 
        data:['Bhopal','Jhansi','Gwalior'] 
        } 
        }; 
     var area = [ 
        alld = ['kr','kp','mu'] 
       ]; 
     var person = { 
     firstName : "John", 
     lastName : "Doe", 
     age  : 50, 
     eyeColor : "blue", 
     details :{ 
      getInfo :{ 
       state : function() 
       { 
       return document.getElementById("slectstate").innerHTML = printHtmlAttr.option(states); 
       }, 
       city : function (statename) 
       { 
       statename = statename.trim(); 
       console.log(statename); 
        return document.getElementById("slectstate2").innerHTML = printHtmlAttr.option(cities.statename.data); 
       }, 
       area : function (city) 
       { 

       }, 
      } 
     } 

    } 
    var printHtmlAttr={ 
     option : function(val) 
     { 
      var options='<option value="">choose</option>'; 
      $.each(val,function(e,v){ 
      options = options+'<option value="'+v+'">'+v+'</option>'; 
      }); 
      return options; 
     } 
    } 
    $(document).ready(function(){ 
     person.details.getInfo.state(); 
     $("body").on("change","#slectstate",function(){ 
     person.details.getInfo.city($(this).val()); 
     }); 
    }); 
     </script> 
    </head> 
    <body> 
    <select id="slectstate"></select> 
    <select id="slectstate2"></select> 
    </body> 
    </html> 

回答

0

我想你想在這裏做這一行是引用Statename的城市是什麼。

return document.getElementById("slectstate2").innerHTML = printHtmlAttr.option(cities.statename.data); 

這會引發錯誤。

請嘗試下面的一個。

return document.getElementById("slectstate2").innerHTML = printHtmlAttr.option(cities[statename].data); 
+0

謝謝:) ..它的工作 –