Вывод переменных с интревалом
Задача состоит в том, что бы выводить слова из массива с интервалом по порядку.
У меня есть JSON-массив:
[{"id":"8","en_word":"Head","transcription":"hed ","ru_word":"\u0413\u043e\u043b\u043e\u0432\u0430"},{"id":"9","en_word":"Word","transcription":"w\u025c\u02d0d","ru_word":"\u0421\u043b\u043e\u0432\u043e"}]
...и скрипт который его обрабатывает и выводит слова:
var q1="<?= addslashes(json_encode($en_words)); ?>";
var data=JSON.parse(q1);
function getWord(i){
document.getElementById("word").innerHTML= data[i].en_word;
}
$(document).ready(function(){
for (var i=0 in data) {
setTimeout(getWord(i), 10000);
}
});
место, куда выводится слово: <p id="word"></p> Проблема в том, что данный скрипт отрабатывая, возвращает только последнее слово и кажется без интервала. Я мне нужно что бы слова выводились с указанным интервалом по порядку. Очень нужна квалифицированная помощь. П.С. Сайтец пишется на CodeIgniter, П.П.С Я новичек) |
opus44,
уберите for и перенесите setTimeout в getWord |
рони,можете показать на примере как это должно выглядеть? Спасибо.
|
Цитата:
|
opus44,
<p id="word"></p>
<script>
var q1='[{"id":"8","en_word":"Head","transcription":"hed ","ru_word":"\u0413\u043e\u043b\u043e\u0432\u0430"},{"id":"9","en_word":"Word","transcription":"w\u025c\u02d0d","ru_word":"\u0421\u043b\u043e\u0432\u043e"}]';
var data=JSON.parse(q1);
data = Object.keys(data).map(function (key) {
return data[key]["en_word"]
});
(function getWord(){
document.getElementById("word").innerHTML = data.shift();
data.length && setTimeout(getWord, 10000);
})()
</script>
|
рони, огромное спасибо. Все работает.
|
Еще такой вопрос. Можно этот код заставить работать в Эксплорере?)
|
opus44,
тоды for :)
<p id="word"></p>
<script>
var q1='[{"id":"8","en_word":"Head","transcription":"hed ","ru_word":"\u0413\u043e\u043b\u043e\u0432\u0430"},{"id":"9","en_word":"Word","transcription":"w\u025c\u02d0d","ru_word":"\u0421\u043b\u043e\u0432\u043e"}]',
data=JSON.parse(q1),
keys = [];
for(var key in data) keys.push(data[key]["en_word"]);
(function getWord(){
document.getElementById("word").innerHTML = keys.shift();
keys.length && setTimeout(getWord, 10000);
})()
</script>
|
Код я немного подправил, т.к. в Мозилле была ошибка "TypeError: document.getElementById(...) is null"
var q1='[{"id":"8","en_word":"Head","transcription":"hed ","ru_word":"\u0413\u043e\u043b\u043e\u0432\u0430"},{"id":"9","en_word":"Word","transcription":"w\u025c\u02d0d","ru_word":"\u0421\u043b\u043e\u0432\u043e"}]',
data=JSON.parse(q1),
keys = [];
for(var key in data) keys.push(data[key]["en_word"]);
$(document).ready(function(){
(function getWord(){
document.getElementById("word").innerHTML = keys.shift();
keys.length && setTimeout(getWord, 1000);
})()
});
, но ни в первом ни во втором случае под восьмым Эксплорером не завелось( |
opus44, в 8 уже должно работать но можно добавить полифил.
https://developer.mozilla.org/en-US/...l_Objects/JSON Цитата:
и нужно понимание что обьекты на странице возникают не все сразу. достаточно разместить скрипт после тега с которым он работает как в примере выше. |
| Часовой пояс GMT +3, время: 12:28. |