как получить Ввод заданного значения в массив - PullRequest
0 голосов
/ 29 апреля 2020

Я работаю над калькулятором на основе некоторых Json данных, которые я хочу получить, когда я ввожу долготу и широту. Я получаю код сетки, связанный с этой долготой и широтой. Проблема в том, что когда я получаю значение из входных данных, результат reurnd равен 0 означает, что значение ввода не определено

, так выглядит мой код

   
<!DOCTYPE html>
<html>
<head>

</head>
<body>


<form action="" id="my-form">
  <div class="form-group">
    <label for="">Enter Lat</label>
    <input type="text" id="lat" step="any">
    <label for="">Enter Long</label>
    <input type="textr" id="long" step="any">

  </div>
  <input type="button" id="Btn" value="Calculate" >
  <h2 id="result">result</h2>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
var desiredLat = document.getElementById("lat").value,
desiredLong = document.getElementById("long").value;
  const
  myData = {
   "datagrid": [
     { "GRIDCODE": 1735,"lat": 35.91511132, "long": -5.401484264 },
     { "GRIDCODE": 1805, "lat": 35.90677815, "long": -5.468149593 },
     { "GRIDCODE": 1808, "lat": 35.90677815, "long":-5.459816427 },
     { "GRIDCODE": 1784, "lat": 35.89844499, "long":-5.476482759 }
   ]
 };

  gridcode = lookupGridcodeByLatAndLong(myData.datagrid),
  headerHTML = gridcode ;
console.log(headerHTML);



function lookupGridcodeByLatAndLong(sourceArray){
  let gridcode = 0;
  
  for (let currentObject of sourceArray){
    if (currentObject.lat === desiredLat && currentObject.long === desiredLong){
      gridcode = currentObject.GRIDCODE;
    }
  }
 
  return gridcode;
}
$("#Btn" ).click(function() {
  $("#result").html(gridcode);
});

</script>
</body>
</html>

1 Ответ

0 голосов
/ 29 апреля 2020

Причина, по которой вы получаете значение zero, заключается в том, что вы впервые вызвали функцию lookupGridcodeByLatAndLong с передачей значений lat и lang, оба значения вернут неопределенное значение, поскольку вы еще не вводили их ,

Вы должны заполнить их значением, затем нажать кнопку, чтобы получить значения lat и lang, прежде чем выполнять вычисления, чтобы получить GRIDCODE, и фактически вам не нужно анализировать значение объекта в качестве параметра, поскольку вы инициализировали его как глобальный параметр, так что вы все равно можете использовать его внутри своей функции, не анализируя его.

<!DOCTYPE html>
<html>
<head>

</head>
<body>


<form action="" id="my-form">
  <div class="form-group">
    <label for="">Enter Lat</label>
    <input type="text" id="lat" step="any">
    <label for="">Enter Long</label>
    <input type="textr" id="long" step="any">

  </div>
  <input type="button" id="Btn" value="Calculate" >
  <h2 id="result">result</h2>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
  const
  myData = {
   datagrid: [
     { "GRIDCODE": 1735,"lat": 35.91511132, "long": -5.401484264 },
     { "GRIDCODE": 1805, "lat": 35.90677815, "long": -5.468149593 },
     { "GRIDCODE": 1808, "lat": 35.90677815, "long":-5.459816427 },
     { "GRIDCODE": 1784, "lat": 35.89844499, "long":-5.476482759 }
   ]
 };



function lookupGridcodeByLatAndLong(lat, long){
  let gridcode = 0;
  
  var result = myData.datagrid.find(x => x.lat == lat && x.long == long)
  if (result) {
    gridcode = result.GRIDCODE;
  }
 
  return gridcode;
}
$("#Btn" ).click(function() {
	var lat = document.getElementById("lat").value,
	long = document.getElementById("long").value;
	var result = lookupGridcodeByLatAndLong(lat, long)
  $("#result").html(result);
});

</script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...