var data={
"sd":{"citys":[{ "cityID": "jn", "cityName": "济南"},{ "cityID": "ly", "cityName": "临沂"}]},
"sc":{"citys":[{ "cityID": "cd", "cityName": "成都"},{ "cityID": "pzh", "cityName": "攀枝花"}]}var cities;
function get(sf)
{
 cities=data[sf].citys;
}
get('sd');
//这样无法获取对应的数据
//而用
cities=data['sd'].citys;
//就可以,请问是怎么回事?

解决方案 »

  1.   

    楼主至少要把对象给传进去啊,要不谁知道你sf是谁的sf啊。
    而且楼主需要弄清楚局部变量和全局变量的关系。函数内部的定义的叫局部变量。
    看到楼主目前的代码,希望楼主多看看js变量和函数两个章节
    <script type="text/javascript">
    var data={
    "sd":{"citys":[{ "cityID": "jn", "cityName": "济南"},{ "cityID": "ly", "cityName": "临沂"}]},
    "sc":{"citys":[{ "cityID": "cd", "cityName": "成都"},{ "cityID": "pzh", "cityName": "攀枝花"}]}};var cities;
    function get(sf,data){
     var cities=data[sf].citys;
     return cities;
    }
    alert(get('sd',data));
    //这样无法获取对应的数据
    //而用
    cities=data['sd'].citys;
    //就可以,请问是怎么回事?
    </script>
      

  2.   


    function get(sf)
    {
    var data={
    "sd":{"citys":[{ "cityID": "jn", "cityName": "济南"},{ "cityID": "ly", "cityName": "临沂"}]},
    "sc":{"citys":[{ "cityID": "cd", "cityName": "成都"},{ "cityID": "pzh", "cityName": "攀枝花"}]} cities=data[sf].citys;
    }//这样就是不行,奇怪了
      

  3.   

    额,你data最后]}标签没闭合}]}};
      

  4.   

    原因是你没返回值。
    function get(sf) {
    return cities = data[sf].citys;
    }
      

  5.   


    sd,sc相当于行号,严格来说,里面的参数应该是从0开始的,即
    cities=data[0].citys;
    cities=data[1].citys;
      

  6.   

    确实很蛋疼  alert length 显示 有 2个  但是alert 本身有问题了