2012-08-15 42 views
0

我无法警告对应于区域标记ID的对象值。与输入值相关的对象的警报值属性

我的代码,

  $(document).ready(function() { 
      $(".wholecirclewrapper area").click(function(){  
       if($(this).hasClass("active")) {   
        return false; 
       }  
       var choice = $(this).attr("id");  
       $.each(results.States, function(i, item) { 
        var st=results.States[i].Name; 
        if(choice==st) 
        { 
         alert(results.States[i].ISHI); 
        } 
       }); 

      }); 

     }); 

我的HTML代码

  <div id="mapdiv"> 
     <img src="india.gif" alt="India" usemap="#indiamap" /> 
     <map name="indiamap" class="wholecirclewrapper"> 
      <area class="specificshelfdiv1" id="AndraPradesh" shape="rect" coords="0,0,82,126" href="#" /> 
      <area class="specificshelfdiv2" id="ArunachalPradesh" shape="circle" coords="90,58,3" href="#" /> 
      <area class="specificshelfdiv3" id="Assam" shape="circle" coords="124,58,8" href="#" />  
     </map> 
    </div> 

我的外部JSON看起来像

 var results={"States":[ 
     { "Name" : "AndraPradesh" , "ISHI" : "19.5 (Serious)" ,"Literacy rate" : "67.7" ,"Population rate" : "84,665,533" ,"NFHS" : "29.8" ,"Tap water" : "69.9"}, 
     { "Name" : "ArunachalPradesh" , "ISHI" : "Not estimated" ,"Literacy rate" : "67" ,"Population rate" : "1,382,611" ,"NFHS" : "29.6" ,"Tap water" : "65.5"}, 
     { "Name" : "Assam" , "ISHI" : "19.8 (Serious)" ,"Literacy rate" : "73.2" ,"Population rate" : "31,169,272" ,"NFHS" : "35.8" ,"Tap water" : "10.5"} 
    ] 
    }; 

我正在通过

  <script src="json_states.json" type="text/javascript"> </script> 
调用JSON

我做错了什么?

+0

这不是JSON,这是一个JavaScript对象。 – 2012-08-15 12:02:16

+0

做一些基本的调试。检查'choice'和'results.States [i] .Name'是什么。 – 2012-08-15 12:04:53

+0

我跑了脚本,它为我工作,我认为**结果**没有正确定义在您的示例 – Valentin 2012-08-15 12:06:41

回答

2

首先尝试在Chrome中按F12与的console.log

console.log(results.States[i].ISHI); 

更换警报然后,转到控制台并查看是否打印值。 根据经验,总是使用console.log而不是alert,因为它更强大,更易于使用。

更新:

尝试加载以下顺序的脚本文件头:

<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script> 
<script src="json_states.json"></script> 
<script> 
    $(document).ready(function() { 
... 
</script> 

也看到这个例子中,我写道:http://radulescu.me/overflow/1/

+0

看起来不错,因为评论不是答案..! – 2012-08-15 12:00:16

+0

我试过了。但仍然没有工作.. – 2012-08-15 12:02:08

+0

好吧,它可能是OP已禁用在她的浏览器中的警报 – Valentin 2012-08-15 12:02:31

1

您的代码似乎是工作this jsFiddle example在这里。我添加了另一个元素<p id="result"></p>,而不是提醒我正在设置此元素的.text(),这很好。试试这个方法而不是alert,看看你得到了什么。

$(".wholecirclewrapper area").click(function() { 
    if ($(this).hasClass("active")) { 
     return false; 
    } 

    var choice = $(this).attr("id"); 

    $.each(results.States, function(i, item) { 
     var st = results.States[i].Name; 
     if (choice == st) { 
      $("#result").text(results.States[i].ISHI); 
     } 
    }); 
}); 

您是否使用某种弹出式窗口拦截器,因为这些阻止器会阻止某些脚本执行。如果没有,那么我建议你在你的浏览器调试环境中检查脚本错误。


编辑 - 如果你从外部文件加载,而不是把它放置在头的JSON,你尝试加载它是这样的:

$.getJSON('json_states.json', function(data) { 
    var results = data; 

    // do the rest of your script here 
}); 
+0

谢谢...但它不是一个javascript对象。我正在通过 2012-08-15 12:15:08

+0

@ErmaIsabel调用外部json文件:请参阅文章编辑。 – 2012-08-15 12:22:52

+0

我试过,但呐...得到以下错误 - XMLHttpRequest无法加载文件:/// D:/***/json_states.json。 Access-Control-Allow-Origin不允许Origin null。 – 2012-08-15 12:29:48

1

它被说3次已经,但是因为你似乎无视它,或者没有理解,我会再次发布它。

var results={"States":[ 
    { "Name" : "AndraPradesh" , "ISHI" : "19.5 (Serious)" ,"Literacy rate" : "67.7" ,"Population rate" : "84,665,533" ,"NFHS" : "29.8" ,"Tap water" : "69.9"}, 
    { "Name" : "ArunachalPradesh" , "ISHI" : "Not estimated" ,"Literacy rate" : "67" ,"Population rate" : "1,382,611" ,"NFHS" : "29.6" ,"Tap water" : "65.5"}, 
    { "Name" : "Assam" , "ISHI" : "19.8 (Serious)" ,"Literacy rate" : "73.2" ,"Population rate" : "31,169,272" ,"NFHS" : "35.8" ,"Tap water" : "10.5"} 
] 
}; 

不是JSON。它是一个Javascript对象。

JSON只会是这样的:

{"States":[ 
    { "Name" : "AndraPradesh" , "ISHI" : "19.5 (Serious)" ,"Literacy rate" : "67.7" ,"Population rate" : "84,665,533" ,"NFHS" : "29.8" ,"Tap water" : "69.9"}, 
    { "Name" : "ArunachalPradesh" , "ISHI" : "Not estimated" ,"Literacy rate" : "67" ,"Population rate" : "1,382,611" ,"NFHS" : "29.6" ,"Tap water" : "65.5"}, 
    { "Name" : "Assam" , "ISHI" : "19.8 (Serious)" ,"Literacy rate" : "73.2" ,"Population rate" : "31,169,272" ,"NFHS" : "35.8" ,"Tap water" : "10.5"} 
]} 

林不知道,如果以.json文件扩展名会导致与任何浏览器的问题,但如果你的定义文件中的变量,它应该只是.js文件。 ..因为那就是它的原因。

+0

谢谢......我明白了...... – 2012-08-16 05:32:59