Это действительно возвращает значение, как указано в документации и, как и следовало ожидать:
function swimWorkout() {
return rand;
}
Однако, это не то, что вы ожидаете:
<button onclick="swimWorkout();">Find the length </button>
Когда вы нажимаете эту кнопку, функция выполняется и возвращается значение. Но нет нигде инструкции относительно того, что делать с этим значением. Нет причин, по которым он будет отображаться где-либо, потому что нет кода для его отображения.
Вы нашли способ потенциально отобразить что-либо:
document.write(rand);
Однако это может быть проблематичным подходом. document.write()
не дает большого контроля над тем, где в документе вы хотите что-то написать. Если у вас есть некоторый встроенный JavaScript, выполняющийся при загрузке страницы, он должен выводить прямо там, где она есть. Но что-нибудь после этого факта, вероятно, не напишет, куда вы хотите.
Вместо этого вы можете использовать другой код JavaScript для выбора элемента и вывода на него. Например, рассмотрим что-то вроде этого:
myArray = [2000, 2200, 2300, 2400, 2600, 3000];
var rand = myArray[Math.floor(Math.random() * myArray.length)];
function swimWorkout() {
document.getElementById('output').innerText = rand;
}
<button onclick="swimWorkout();">Find the value</button>
<p>The value is: <span id="output"></span></p>
Вы можете дополнительно отсоединить свой JavaScript от своего HTML (также рекомендуется), связавшись с событием click вместо записи встроенного вызова функции в HTML:
myArray = [2000, 2200, 2300, 2400, 2600, 3000];
var rand = myArray[Math.floor(Math.random() * myArray.length)];
function swimWorkout() {
document.getElementById('output').innerText = rand;
}
document.getElementById('find-value').addEventListener('click', swimWorkout);
<button id="find-value">Find the value</button>
<p>The value is: <span id="output"></span></p>
Быстрое разделение разметки и логики становится намного проще в целом.