Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2014, 12:10
Интересующийся
Отправить личное сообщение для opus44 Посмотреть профиль Найти все сообщения от opus44
 
Регистрация: 06.11.2014
Сообщений: 16

Вывод переменных с интревалом
Задача состоит в том, что бы выводить слова из массива с интервалом по порядку.
У меня есть 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,
П.П.С Я новичек)
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2014, 12:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

opus44,
уберите for и перенесите setTimeout в getWord
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2014, 12:23
Интересующийся
Отправить личное сообщение для opus44 Посмотреть профиль Найти все сообщения от opus44
 
Регистрация: 06.11.2014
Сообщений: 16

рони,можете показать на примере как это должно выглядеть? Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2014, 12:58
Интересующийся
Отправить личное сообщение для opus44 Посмотреть профиль Найти все сообщения от opus44
 
Регистрация: 06.11.2014
Сообщений: 16

Сообщение от рони
уберите for
если я уберу for то как будет осуществляться перебор переменных?
Ответить с цитированием
  #5 (permalink)  
Старый 06.11.2014, 13:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #6 (permalink)  
Старый 06.11.2014, 14:24
Интересующийся
Отправить личное сообщение для opus44 Посмотреть профиль Найти все сообщения от opus44
 
Регистрация: 06.11.2014
Сообщений: 16

рони, огромное спасибо. Все работает.
Ответить с цитированием
  #7 (permalink)  
Старый 06.11.2014, 14:25
Интересующийся
Отправить личное сообщение для opus44 Посмотреть профиль Найти все сообщения от opus44
 
Регистрация: 06.11.2014
Сообщений: 16

Еще такой вопрос. Можно этот код заставить работать в Эксплорере?)
Ответить с цитированием
  #8 (permalink)  
Старый 06.11.2014, 14:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #9 (permalink)  
Старый 06.11.2014, 15:10
Интересующийся
Отправить личное сообщение для opus44 Посмотреть профиль Найти все сообщения от opus44
 
Регистрация: 06.11.2014
Сообщений: 16

Код я немного подправил, т.к. в Мозилле была ошибка "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);
        })() 
 });

, но ни в первом ни во втором случае под восьмым Эксплорером не завелось(
Ответить с цитированием
  #10 (permalink)  
Старый 06.11.2014, 15:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

opus44, в 8 уже должно работать но можно добавить полифил.
https://developer.mozilla.org/en-US/...l_Objects/JSON
Сообщение от opus44
Код я немного подправил, т.к. в Мозилле была ошибка "TypeError: document.getElementById(...) is null"
хватило бы window.onload -- зачем jquery
и нужно понимание что обьекты на странице возникают не все сразу.
достаточно разместить скрипт после тега с которым он работает как в примере выше.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод 2-х переменных из функции function(event) free_style Общие вопросы Javascript 1 18.06.2014 10:58
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
Вывод нескольких переменных с функции SnowyWolf Общие вопросы Javascript 10 23.04.2014 14:34
Вывод списка по количеству переменных utb Элементы интерфейса 10 27.02.2014 13:40
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41