fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.json') .then(res => res.json()) .then(json => { let countrySelect = document.createElement("select"); let citySelect = document.createElement("select"); for (let countryName in json) { let countrySelectOption = document.createElement("option") countrySelectOption.innerText = countryName; countrySelect.append(countrySelectOption) } countrySelect.onchange = () => { citySelect.innerHTML = ""; let cityName = json[countrySelect.value] for (let key in cityName) { let citySelectOption = document.createElement("option") citySelectOption.innerText = cityName[key]; citySelect.append(citySelectOption) } } document.body.append(countrySelect); document.body.append(citySelect); }) let table = document.createElement("table"); for (let i = 0; i <= 9; i++) { let tr = document.createElement("tr"); for (let j = 0; j <= 9; j++) { let td = document.createElement("td"); if (i == 0 || j == 0) { td.innerText = i + j; } else { td.innerText = i * j; } tr.appendChild(td); td.onmouseover = function (event) { for (let i = 0; i < table.children.length; i++) { //перебор всех тр и покраска тд с определенным индексом table.children[i].children[j].style.background = "yellow"; } tr.style.background = "red" //красим строку td.style.background = "orange"; //красим саму ячейку } td.onmouseout = function (event) { for (let i = 0; i < table.children.length; i++) { table.children[i].children[j].style.background = ""; } tr.style.background = "" td.style.background = ""; } } table.appendChild(tr); } document.body.appendChild(table); table.style.float = "left";