Я думаю, вы хотите передать введенное значение в функцию listPlanets в качестве аргумента?
var planets = [
{planet: 'Mercury', position: '1', orbit_time: '0.24', nat_satellites: '0'},
{planet: 'Venus', position: '2', orbit_time: '0.62', nat_satellites: '0'},
{planet: 'Earth', position: '3', orbit_time: '1', nat_satellites: '1'},
{planet: 'Mars', position: '4', orbit_time: '1.88', nat_satellites: '2'},
{planet: 'Jupiter', position: '5', orbit_time: '11.86', nat_satellites: '67'},
{planet: 'Saturn', position: '6', orbit_time: '29.46', nat_satellites: '62'},
{planet: 'Uranus', position: '7', orbit_time: '84.32', nat_satellites: '27'},
{planet: 'Neptune', position: '8', orbit_time: '164.79', nat_satellites: '14'}
];
var listPlanets = function (i) { //i is a parameter that will be passed into the function at the time it is called
i -= 1;//the user entered a value between 1 and 8, but our array indexes are from 0 - 7. decrease input by one
document.write(planets[i].planet + ' is planet #' + planets[i].position +
' from the Sun. Time to complete its orbit is ' + planets[i].orbit_time + ' earth year(s). It has ' + planets[i].nat_satellites + ' natural satellite(s).<br>' );
}
// listPlanets();
var num = window.prompt("Please enter a number between 1 and 8");
if (1 <= num && num <= 8) {
listPlanets(num); //pass num into listPlanets function as argument
} else {
alert("The value you entered is not within range. Please reload the page and enter a value thatis within 1 and 8, inclusive.");
window.location.reload();
}
В приведенном выше коде я удалил цикл, потому что мы уже знаем выбор пользователя.Нет необходимости выполнять работу по обходу каждого элемента в массиве, потому что мы можем получить к нему доступ напрямую.Так как массивы основаны на 0 в javascript, мы должны учитывать это, уменьшая ввод данных пользователем на 1.
Как указано в некоторых комментариях, вы можете предпочесть отразить ваши данные в DOM, а не в документе..write, который перезапишет существующую страницу и обычно считается плохой практикой.Если бы вместо этого вы делали это в DOM, это могло бы выглядеть примерно так:
var planets = [
{planet: 'Mercury', position: '1', orbit_time: '0.24', nat_satellites: '0'},
{planet: 'Venus', position: '2', orbit_time: '0.62', nat_satellites: '0'},
{planet: 'Earth', position: '3', orbit_time: '1', nat_satellites: '1'},
{planet: 'Mars', position: '4', orbit_time: '1.88', nat_satellites: '2'},
{planet: 'Jupiter', position: '5', orbit_time: '11.86', nat_satellites: '67'},
{planet: 'Saturn', position: '6', orbit_time: '29.46', nat_satellites: '62'},
{planet: 'Uranus', position: '7', orbit_time: '84.32', nat_satellites: '27'},
{planet: 'Neptune', position: '8', orbit_time: '164.79', nat_satellites: '14'}
];
var listPlanets = function (i) {
i -= 1;
document.getElementById('planet_name').innerHTML = planets[i].planet;
document.getElementById('planet_info').innerHTML = planets[i].planet + ' is planet #' + planets[i].position +
' from the Sun. Time to complete its orbit is ' + planets[i].orbit_time + ' earth year(s). It has ' + planets[i].nat_satellites + ' natural satellite(s).<br>';
}
// listPlanets();
document.getElementById('info_button').addEventListener('click', function(evt){
var num = document.getElementById('planet_input').value;
if (1 <= num && num <= 8) {
listPlanets(num);
} else {
alert("The value you entered is not within range. Please reload the page and enter a value thatis within 1 and 8, inclusive.");
}
});
Pick a planet between 1 and 8 <input id='planet_input' type='number' /><button id='info_button'>View Info</button>
<h1 id='planet_name'></h1>
<h3 id='planet_info'></h3>