function formatToHuman($n = 0, $d = 1)
{
$abbr = ['','K','M','G','T'];
foreach($abbr as $letter) {
if ($n < 1024) {
break;
}
$n = $n / 1024;
}
return floatval(round($n,$d)).$letter;
}
<select id="country"></select>
<select id="city"></select>
const setOptions = (el, data) =>
el.innerHTML = data
.map(n => `<option>${n}</option>`)
.join('');
const countries = [
{ name: 'Германия', cities: [ 'Берлин', 'Бонн', 'Мюнхен' ] },
{ name: 'Франция', cities: [ 'Париж', 'Лион', 'Марсель' ] },
{ name: 'Италия', cities: [ 'Рим', 'Неаполь', 'Милан' ] },
];
const country = document.querySelector('#country');
const city = document.querySelector('#city');
setOptions(country, countries.map(n => n.name));
country.addEventListener('change', function() {
setOptions(city, countries.find(n => n.name === this.value).cities);
});
country.dispatchEvent(new Event('change'));
let array = []; // Ваш JSON, полученный через Ваше API
array.sort(function compare(a, b) {
if (a.name === b.name) return 0;
return a.name < b.name ? -1 : 1;
});
Также почему :before сполз вниз, хотя стоит top: 50%. Разве он не должен находится на середине рамки?