var r_text = ['Hi', 'Go', 'No'],
textProp = 'textContent' in document.createElement('div') ?
'textContent' :
'innerText',
//update this ID selector to match an element in the page:
elementToReceiveWord = document.getElementById('WORD'),
seconds = 20; //timer in seconds
function countdown() {
var count = seconds;
var timerId = setInterval(function() {
count--;
console.log(count);
if(count == 0) {
var word = r_text[Math.floor( Math.random() * r_text.length )];
elementToReceiveWord[textProp] = word;
setTimeout(function() {
elementToReceiveWord[textProp] = '';
}, 5000);
count = seconds;
}
}, 1000);
}
countdown();
演示
不要忘记更新elementToReceiveWord
的 ID 选择器以选择页面中的元素。
您的原始代码有几个错误:
r_randomtext
/ r_text
var 名称不匹配;
- 在显示文本之前不绘制新的随机值;
- Math.random() * x 中的数组长度错误;
- 计时器是 10 秒而不是请求的 20 秒。
改进:
- 使用文字数组语法(更简洁、更短且解释器优化友好)。
- 内联了一些数学运算。
我也对元素的文本属性进行了特征检测检查。所有现代浏览器textContent
都支持 W3C 标准,我将innerText
其用作旧 IE 的后备。Chrome 支持这两个属性,Firefox 只支持textContent
,而 IE<9 不支持textContent
(因此是innerText
后备)。
如果您不关心旧的 IE,您可以删除该检查并简单地使用element.textContent = ...
。