событие вызывает функцию с параметром - функция выполнена с неправильным параметром - PullRequest
0 голосов
/ 04 мая 2020

У меня есть карта и справочная таблица. В таблице представлены сообщества, полигоны которых показаны на карте. При наведении курсора на элемент в таблице соответствующий многоугольник на карте будет выделен. Когда запускается событие onmouseover , вызывается функция.

В приведенном ниже примере у меня есть строка таблицы с событиями onmouseover и onmouseout . В обоих случаях должна быть вызвана функция hoverMunicipality с заданным идентификатором (0732130000000) и флагом правдивости / ложности. Функция вызывается, но параметр, который я нахожу в отладчике, равен 7941914624. Может ли кто-нибудь раскрутить мне мозг?

function hoverMunicipality(municipalityId, switchparam) {
  console.log(municipalityId, switchparam);
  if (switchparam == true) {
    let p = data.features.find(e=> e.properties.RS === municipalityId);
  }
  if (switchparam == false) {
    let p = data.features.find(e=> e.properties.RS === municipalityId);
  }
}
<table>
  <tr onmouseover="hoverMunicipality(073130000000, true)" 
      onmouseout="hoverMunicipality(073130000000, false)"><td>Gondor</td></tr>
</table>

Ответы [ 3 ]

2 голосов
/ 04 мая 2020

Это число - восьмеричное представление. Передайте это число как строку, и оно должно работать так, как вы хотите.

1 голос
/ 04 мая 2020

Поскольку значения, которые вы передаете, не заключены в кавычки, они обрабатываются как числа. Но поскольку эти числа начинаются с нуля, система рассматривает их как восьмеричные числа (с основанием 8), и поэтому вы не видите ожидаемого представления с основанием 10.

Вы можете просто рассматривать числа как строки и продвигайтесь вперед со строками, или вы можете начать как строки и преобразовать в числа.

Чтобы использовать числа, введите числа как строки, а затем проанализируйте число с основанием 10 из этих строк с помощью parseInt(), обязательно передайте второй необязательный аргумент (основание системы счисления), чтобы указать преобразование по основанию 10. Это приведет к потере ведущего нуля в начальном значении:

function hoverMunicipality(municipalityId, switchparam) {
  // To convert the string to a base 10 number:
  console.log(parseInt(municipalityId,10));
  
  // Or just proceed with the data as a string:
  console.log(municipalityId);  

  // Other code here
}
<table>
  <tr onmouseover="hoverMunicipality('073130000000', true)" 
      onmouseout="hoverMunicipality('073130000000', false)"><td>Gondor</td></tr>
</table>
0 голосов
/ 04 мая 2020

добавить апостроф: '073130000000'

<tr onmouseover="hoverMunicipality('07313000000', true)" onmouseout="hoverMunicipality('073130000000', false)"<td>Gondor</td></tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...