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"} 
     ]
     };

私は経由でjsonを呼び出しています

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

私は何を間違っていますか?

4

3 に答える 3

2

まず、アラートconsole.logに置き換えてみてください

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

次に、Chrome で F12 キーを押し、コンソールに移動して、値が出力されるかどうかを確認します。経験則として、alert の代わりに console.log を常に使用してください。より強力で使いやすいからです。

アップデート:

ドキュメント ヘッドに次の順序でスクリプトをロードしてみてください。

<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/

于 2012-08-15T11:59:19.557 に答える
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...である必要があります。

于 2012-08-15T13:14:33.787 に答える
1

あなたのコードは、こちらのjsFiddleの例で機能しているようです。別の要素を追加し<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
});
于 2012-08-15T12:07:28.203 に答える