Не добавляется весь список в Input type = "text"
Мне нужно добавить список моих городов из массива объектов на страницу. Но столкнулся с проблемой, что добавляется только последний город, причем та же функция, только с console.log добавляет весь список в консоль, а не только последний.
Вот код в JS:
function CityMap(str) {
function CityMapRecording(str) {
[this.city, this.latitude, this.longitude] = str.split(" ,");
}
this.list = [];
str.split(";").forEach(row => {
this.list.push(new CityMapRecording(row));
});
}
CityMap.prototype.citiesList = function () {
return this.list.map(function (k) {
return k.city;
});
};
window.addEventListener("load", function (){
document.getElementById("CitiesList").innerHTML = objCityMap.citiesList().forEach(function (element) {
return document.getElementById("CitiesList").value = element;
});
},false);
var objCityMap = new CityMap("Nashville, TN ,36.17 ,-86.78;New York, NY ,40.71 ,-74.00;Atlanta, GA ,33.75 ,-84.39;Denver, CO ,39.74 ,-104.98;Seattle, WA ,47.61 ,-122.33;Los Angeles, CA ,34.05 ,-118.24;Memphis, TN , 35.15 ,-90.05");
console.log(objCityMap.list);
objCityMap.citiesList().forEach(element => console.log(element));
Возможно что-то не так с HTML, поэтому вот и он:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<div class="head">
<h1>Welcome to Pindosia!</h1>
</div>
<form class="form" action="#">
<div class="firstColumn">
<div class="cityList">
<div class="cityListContent"><p>Cities list:</p></div>
<div class="cityListContent"><p><input type="text" id="CitiesList" readonly ></input></p></div>
</div>
</div>
</form>
</div>
<script src="stackOverFlow.js"></script>
</body>
</html>
В общих чертах: мне нужно, чтобы при загрузке страницы показывало весь список городов, а показывает только последний город.
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
Для табличного отображения - добавил таблицу (Если надо будет добавлять параметры к ним).
Если нет то можно заменить просто на div. Пример:
function CityMap(str) {
function CityMapRecording(str) {
[this.city, this.latitude, this.longitude] = str.split(" ,");
}
this.list = [];
str.split(";").forEach(row => {
this.list.push(new CityMapRecording(row));
});
}
CityMap.prototype.citiesList = function () {
return this.list.map(function (k) {
return k.city;
});
};
window.addEventListener("load", function (){
document.getElementById("CitiesList").innerHTML = objCityMap.citiesList().forEach(function (element) {
return document.getElementById("CitiesList").value = element;
});
},false);
var objCityMap = new CityMap("Nashville, TN ,36.17 ,-86.78;New York, NY ,40.71 ,-74.00;Atlanta, GA ,33.75 ,-84.39;Denver, CO ,39.74 ,-104.98;Seattle, WA ,47.61 ,-122.33;Los Angeles, CA ,34.05 ,-118.24;Memphis, TN , 35.15 ,-90.05");
objCityMap.citiesList().forEach(function (c) {
let newDiv = document.createElement('tr');
newDiv.innerText = c;
document.getElementById('city').appendChild(newDiv);
});
<body>
<div class="container">
<div class="head">
<h1>Welcome to Pindosia!</h1>
</div>
<form class="form" action="#">
<div class="firstColumn">
<div class="cityList">
<div class="cityListContent"><p>Cities list:</p></div>
<div class="cityListContent"><p><input type="text" id="CitiesList" readonly ></input></p></div>
</div>
</div>
</form>
<div>
<table id="city">
</table>
</div>
</div>
<script src="stackOverFlow.js"></script>
</body>