2017-04-01 5 views
1

JavaScriptにはかなり新しく、なぜこのようなことが起こっているのか分かりません。チェックボックスの使用私は、クリックすると、チェックボックスの値を配列に追加しようとしています。それはうまく追加されているようですが、2回です。ここで値が配列に2回追加されていて、理由が分かりません

はHTMLです:

<form id= "checkboxes"> 
<label> Types of Places</label> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
    <input type="checkbox" name="cbox" value="woodland" class="places"/> 
    <label for="woodland"><img src="../img/Woodland.jpg" /></label> 
    <input type="checkbox" name="cbox" value="lodging" class="places"/> 
    <label for="viewpoint"><img src="../img/Viewpoint.jpg" /></label> 
    <input type="checkbox" name="cbox" value="restaurant" class="places"/> 
    <label for="restaurant"><img src="../img/Restaurant.jpg" /></label> 
    <input type="checkbox" name="cbox" value="museum" class="places" /> 
    <label for="historical"><img src="../img/Historical.jpg" /></label> 
    </form> 

、ここでは、関連するJS/jQueryの:

var placeT = []; 

function initialize() { 
    // Default the map view to UK 
    var mapOptions = { 
     center: new google.maps.LatLng(55.3781, -3.4360), 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     zoom: 5 
    }; 

    new AutocompleteDirectionsHandler(map); 

    $(".places").change(function() { 
     $(".places").each(function() { 
      if ($(this).is(':checked')) { 
       placeT.push($(this).val()); 
      } 
     }); 
     alert(placeT); 
    }); 

} 

function findPlaces(boxes, searchIndex) { 



    var request = { 
     bounds: boxes[searchIndex], 
     types: [placeT] 
    }; 

    // alert(request.bounds); 
    service.radarSearch(request, function(results, status) { 
     if (status != google.maps.places.PlacesServiceStatus.OK) { 
      alert("Request[" + searchIndex + "] failed: " + status); 

     } 
     // alert(results.length); 
     document.getElementById('side_bar').innerHTML += "bounds[" + searchIndex + "] returns " + results.length + " results<br>" 
     for (var i = 0, result; result = results[i]; i++) { 
      var marker = createMarker(result); 
     } 
     searchIndex++; 
     if (searchIndex < boxes.length) 
      findPlaces(boxes, searchIndex); 
    }); 
} 

私はそれはおそらく、単純な何かを知っているが、私はちょうどそれを把握するように見えることはできません。助けてくれてありがとう!以下のように

+0

あなたは決して空の 'placeT'配列? – adeneo

+0

これは、チェックボックスのクリックから2つのインスタンスを追加し、配列を空にしてこれを修正しますか? –

+0

次に、 'initialize'が2回実行される可能性があります。 – adeneo

答えて

1

変更してコード:

$(".places").change(function() 
    { 
     placeT = []; 
     $(".places").each(function() 
     { 
      if($(this).is(':checked')) 
      { 
       placeT.push($(this).val()); 
      } 
     }); 
     alert(placeT); 
    }); 
+0

これはトリックでした、ありがとうございました! –

+0

あなたは答えを受け入れてupvoteしますか? –

+0

タイマーがなくなったらすぐに答えを受け取りましたが、残り5分です。 –

関連する問題