Во-первых, ваша функция имеет только одна переменная, которая rand
will be undefined
, как alert()
не return
ничего вызывающего контекста.
Чтобы вернуть случайное имя, однако:
function dogName() {
var names = ['clint','Bee','Copper'];
return names[Math.floor(Math.random() * names.length)]
}
var name = dogName();
console.log(name);
JS Fiddle demo.
И немного обновленная демо, чтобы показать вывод в элементе (идентифицированный это id
):
function dogName() {
var names = ['Clint','Bee','Copper'],
index = Math.floor(Math.random() * names.length),
chosen = names[index];
document.getElementById('output').value = chosen;
return chosen;
}
, который работает со следующим HTML:
<form>
<input type="button" value="RandName" onClick='dogName(this)' />
<label>The generated dog-name is: <input id="output" readonly="readonly" /></label>
</form>
JS Fiddle demo.
Кроме того, это обычно считается лучше избегать использования атрибутов обработки событий в HTML (onclick
, onfocus
, onchange
и т.д.), понятие бытия «ненавязчивый JavaScript»; вместо этого рассмотрим обработку привязки события в самом JavaScript (таким образом, все это в значительной степени в одном и том же месте и упрощает обслуживание и изменение (это обычно неизбежно в какой-то момент). Это один из подходов, который работает в большинстве современных браузеры (включая IE, начиная с версии 9 и далее):
function dogName() {
var names = ['Clint','Bee','Copper'],
index = Math.floor(Math.random() * names.length),
chosen = names[index];
document.getElementById('output').value = chosen;
return chosen;
}
var button = document.querySelector('input[value="RandName"]');
button.addEventListener('click', dogName);
JS Fiddle demo
Ссылки:.
Библиография:
Это работало именно так, как я хотел! Спасибо огромное! – Dingo