Click here to Skip to main content
15,900,378 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi guys, I got a problem about calculate a formula in the javascript. I want to calculate number from textbox and then process it in javascript. But the problem, it can't return any value to my page. Here's my code :


HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Maps JavaScript API Example: Extraction of Geocoding Data</title>
    
	<script>
		function gcd() 
		{
			var getlong1 = document.getElementById("long1").value;
			var getlat1 = document.getElementById("lat1").value;
			var getlong2 = document.getElementById("long2").value;
			var getlat2 = document.getElementById("lat2").value;
			
			var long1 = parseFloat(getlong1);
			var lat1 = parseFloat(getlat1);
			var long2 = parseFloat(getlong2);
			var lat2 = parseFloat(getlat2);
			
			
			var R = 6371; // km
			var a1 = lat1.toRadians();
			var a2 = lat2.toRadians();
			var Δφ = (lat2-lat1).toRadians();
			var Δλ = (long2-long1).toRadians();

			var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
			Math.cos(a1) * Math.cos(a2) *
			Math.sin(Δλ/2) * Math.sin(Δλ/2);
			var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

			var d = R * c;
			
			document.getElementById('results').innerHTML = d;
		}
	</script>
	
	</head>

  <body>

    <form action="#" onsubmit="gcd(); return false;">
      <p>
		Lokasi 1 :
        <input type="text" name="long1" id="long1" size="40" />
        <input type="text" name="lat1" id="lat1" size="40" />
      </p>
	  <p>
		Lokasi 2 :
        <input type="text" name="long2" id="long2" size="40" />
        <input type="text" name="lat2" id="lat2" size="40" />
      </p>
	  <p>
		<input type="submit" name="find" value="Search" />
      </p>
    </form>
    <p id="results"></p>

  </body>
</html>


Anyone, can you help me? Thanks..
Posted
Updated 10-Dec-14 0:06am
v2
Comments
Thanks7872 10-Dec-14 6:07am    
There is nothing special in returning values from client side functions.
var s=your_function();
function your_function{
....
....
return Calculated_Value;
}

would work.
JR009 10-Dec-14 6:24am    
do you get calculation result in variable d?

toRadians() is not defined. Try this:
C#
<script>
    function gcd()
    {
        var getlong1 = document.getElementById("long1").value;
        var getlat1 = document.getElementById("lat1").value;
        var getlong2 = document.getElementById("long2").value;
        var getlat2 = document.getElementById("lat2").value;

        var long1 = parseFloat(getlong1);
        var lat1 = parseFloat(getlat1);
        var long2 = parseFloat(getlong2);
        var lat2 = parseFloat(getlat2);

        var R = 6371; // km
            var a1 = lat1.toRadians();
        var a2 = lat2.toRadians();
        var lat_diff = (lat2-lat1).toRadians();
        var long_diff = (long2-long1).toRadians();

        var a = Math.sin(lat_diff/2) * Math.sin(lat_diff/2) +
        Math.cos(a1) * Math.cos(a2) *
        Math.sin(long_diff/2) * Math.sin(long_diff/2);
        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

        var d = R * c;

        document.getElementById('results').innerHTML = d;
    }

           // Define toRadians()!!!
          if (typeof(Number.prototype.toRadians) === "undefined") {
                   Number.prototype.toRadians = function() {
                   return this * Math.PI / 180;
                   }
          }
</script>
 
Share this answer
 
v2
Comments
Ananta Pratama 10-Dec-14 7:33am    
Thanks :)
Peter Leow 10-Dec-14 7:48am    
You are welcome.
hi,

use

return d

before }

it might works
 
Share this answer
 
I have tried your solution guys become like this :


HTML
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Maps JavaScript API Example: Extraction of Geocoding Data</title>
    
	<script>
		function gcd() 
		{
			var getlong1 = document.getElementById("long1").value;
			var getlat1 = document.getElementById("lat1").value;
			var getlong2 = document.getElementById("long2").value;
			var getlat2 = document.getElementById("lat2").value;
			
			var long1 = parseFloat(getlong1);
			var lat1 = parseFloat(getlat1);
			var long2 = parseFloat(getlong2);
			var lat2 = parseFloat(getlat2);
			
			
			var R = 6371; // km
			var a1 = lat1.toRadians();
			var a2 = lat2.toRadians();
			var Δφ = (lat2-lat1).toRadians();
			var Δλ = (long2-long1).toRadians();

			var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
			Math.cos(a1) * Math.cos(a2) *
			Math.sin(Δλ/2) * Math.sin(Δλ/2);
			var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

			var d = R * c;
			
			
						
			document.getElementById('results').innerHTML = d;
			return d;
		}
	</script>
	
	</head>

  <body>

    <form action="#" onsubmit="gcd(); return false;">
      <p>
		Lokasi 1 :
        <input type="text" name="long1" id="long1" size="40" />
        <input type="text" name="lat1" id="lat1" size="40" />
      </p>
	  <p>
		Lokasi 2 :
        <input type="text" name="long2" id="long2" size="40" />
        <input type="text" name="lat2" id="lat2" size="40" />
      </p>
	  <p>
		<input type="submit" name="find" value="Search" />
      </p>
    </form>
    <p id="results"></p>

  </body>
</html>


But it still can't work :(
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900