Justin Erswell
Justin Erswell

Reputation: 708

getElementById Another Question

As an extension question that Felix Kling answered so brilliantly I now need to do a two part check on the data table deployed.

Can anyone tell me how to add to the code below to allow me not only to copy the values of the pcode fields into an array but to check if there is a check in the checkbox with a corresponding row number i.e. route2 is check then add to the array but if route3 is not checked then exclude it.

         function GetRoute() 
     { 
        var from = document.getElementById('inpAddr').value; 
        var locations = [from]; 
        for(var i = 2; i <= 400; i++) { 
            var element = document.getElementById('pcode' + i);
            if(element === null) { break; } 
            locations.push(element.innerHTML); 
        } 
        var options = new VERouteOptions(); 
        options.DrawRoute = true;
        options.RouteColor = new VEColor(63,160,222,1);
        options.RouteWeight = 3;
        options.RouteCallback = onGotRoute;  
        options.SetBestMapView = true;
        options.DistanceUnit   = VERouteDistanceUnit.Mile;
        options.ShowDisambiguation = true;          
        map.GetDirections(locations,options); 
     } 

Thanks in advance!

Justin

Upvotes: 0

Views: 133

Answers (2)

jessegavin
jessegavin

Reputation: 75690

function GetRoute() { 
  var from = document.getElementById('inpAddr').value; 
  var locations = [from]; 

  // My Modification Starts Here....

  var maxLoopValue = 400;
  var pcode, currentRoute, nextRoute;

  for(var i = 2; i <= maxLoopValue; i++) { 
    pcode = document.getElementById('pcode' + i);
    currentRoute = document.getElementById('route' + i);

    // Make sure the currentRoute is 'checked'
    if (currentRoute.checked) {

      // Make sure there is a 'next' route before trying to check it
      if (i < maxLoopValue) {
        nextRoute = document.getElementById('route' + (i+1));

        // Make sure the 'next' route is 'checked'
        if (nextRoute.checked) {
          locations.push(element.innerHTML); 
        }
      } else {
        // This is the last route, since we know it's checked, include it
        locations.push(element.innerHTML); 
      }
    }
  } 

  // My Modification Ends Here....

  var options = new VERouteOptions(); 
  options.DrawRoute = true;
  options.RouteColor = new VEColor(63,160,222,1);
  options.RouteWeight = 3;
  options.RouteCallback = onGotRoute;  
  options.SetBestMapView = true;
  options.DistanceUnit   = VERouteDistanceUnit.Mile;
  options.ShowDisambiguation = true;          
  map.GetDirections(locations,options); 
} 

Upvotes: 0

Sparafusile
Sparafusile

Reputation: 4966

for( var i = 2 ; (element = document.getElementById('pcode' + i)) && i <= 400; i++ )
{ 
  if( document.getElementById('route' + i).checked )
  {
      locations.push( element.innerHTML ); 
  }
}

Upvotes: 1

Related Questions