2017-02-28 95 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

谢谢:) ..它的工作 –