Возможная проблема # 1
Если это порядок, в котором все выполняется на вашей странице, то e = document.getElementById("text")
никогда не будет работать. Вы можете получить элемент по его идентификатору только после того, как он был построен HTML. Предложение Нила только о получении элемента при загрузке страницы будет работать. Или вы можете переместить сценарий внизу страницы.
Возможная проблема # 2
В вашей функции changeBorder
вы применяете новый цвет следующим образом:
e.border = colors[i];
Но вы, вероятно, хотели получить доступ к e.style.border
. И даже если бы вы это сделали, я понимаю, что border
- это стиль ярлыка, в котором вы определяете ширину, стиль и цвет в одном правиле. Возможно, вы захотите использовать что-то вроде e.style.borderColor
.
Возможная проблема # 3
Не похоже, что вы зашли слишком далеко, чтобы это стало проблемой, но имейте в виду, что при циклическом переключении различных цветов ваша переменная i
будет больше, чем длина цвета. массив. Чтобы этого никогда не происходило, вы можете использовать оператор модуля:
e.style.borderColor = colors[i];
i = (i + 1) % 4;
Бонус
Когда вы только даете setTimeout
функцию без аргументов, вам не нужно использовать кавычки. Следующее нормально и не требует функции eval
:
setTimeout(changeBorder, 1000);