EDIT: JSFiddleJavascript: Извлечь из раскрывающегося меню без JQuery?
Я не уверен, как подойти к этому. Я не хочу использовать лишнее количество идентификаторов или классов.
У меня есть раскрывающееся меню, которое содержит параметры для изменения скорости отображения быстрых слов в текстовом поле в реальном времени. Я попытался получить доступ к тому, какая опция выбрана, и значение в миллисекундах через функцию getTextSpeed
.
Эта функция используется в функции runDisplay
, которая принимает заданный набор слов из текста ввода и отображает их по одному слову за раз, которые располагаются в шахматном порядке на миллисекунды, заданные getTextSpeed
.
Это, похоже, не работает. getTextSpeed
, похоже, не возвращает значение, поэтому я предполагаю, что setInterval()
работает по умолчанию.
Я делаю это неправильно? По моему мнению, это должно сработать. Я пытаюсь получить значение, а не текст, а значение - число. В консоли нет сообщений об ошибках, только никаких заметных изменений при попытке изменить параметры скорости при запуске веб-страницы.
<fieldset>
<p>Speed</p>
<select id="speed">
<option value="300">200 wpm</option>
<option value="200">300 wpm</option>
<option value="171" selected="selected">350 wpm</option>
<option value="150">400 wpm</option>
<option value="133">450 wpm</option>
<option value="120">500 wpm</option>
</select>
</fieldset>
function getTextSpeed() {
var speeds = document.getElementById("speed");
return speeds.options[speed.selectedIndex].value;
}
function start() {
var text = document.getElementById("words").value;
var list = text.split(/\s+/);
runDisplay(list, "display")
}
function runDisplay(data, id) {
var reader = document.getElementById(id);
var index = 0;
var textSpeed = getTextSpeed();
if (timer) {
clearInterval(timer);
}
if (data.length) {
timer = setInterval(function() {
reader.innerHTML = data[index++];
index = index % data.length;
}, textSpeed);
}
}
Что может быть '# words' и' # display' находиться на вашей разметке? Кроме того, как вы запускаете 'start()'? – MinusFour
'# words' - это поле' textarea', в котором пользователь может вводить некоторый текст. '# display' - это' div', который отображает слова. – user3450277
'timer' не определен нигде, поэтому он там не сработает, кроме этого я не вижу никакой ошибки. – MinusFour