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
変数名の不一致。
- テキストを表示する前に新しいランダム値を描画しません。
- Math.random() * x; の配列の長さが間違っています。
- タイマーは、要求された 20 秒ではなく 10 秒でした。
改良点:
- リテラル配列構文を使用します (より簡潔で短く、インタープリターの最適化に適しています)。
- いくつかの数学演算をインライン化しました。
要素の text プロパティにも機能検出チェックを採用しました。最新のブラウザーtextContent
はすべて W3C 標準をサポートしています。私はinnerText
古い IE のフォールバックとして使用しています。Chrome は両方のプロパティをサポートし、Firefox は のみをサポートしtextContent
、IE<9 はサポートしませんtextContent
(したがって、innerText
フォールバック)。
古い IE を気にしない場合は、そのチェックを削除してelement.textContent = ...
代わりに使用することができます。