Вывод переменных с интревалом
Задача состоит в том, что бы выводить слова из массива с интервалом по порядку.
У меня есть 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, время: 17:23. |