2013-06-09 4 views
0

У меня есть мнение Grails с тег сценария, как это: непервый Вызов JavaScript функции не выполняется

<script type="text/javascript"> 

     /* the first setInterval */ 
    setInterval(
     function() 
     { 
     console.log("Test..."); 
     }, 
     5000 
    ); 

    setInterval(
     function() 
     { 
     console.log("Test... (2)"); 
     }, 
     5000 
    ); 

    GetContent(1); 
    GetContent(2); 
    GetContent(3); 
    GetContent(4); 

    setInterval(
     Test0, 
     5000 
    ); 

    setInterval(
     Test2, 
     5000 
    ); 

    setInterval(
     ShowTime, 
     1000 * 10 
    ); 

    setInterval(
     Test3, 
     1000 * 9 
    ); 

    setInterval(
     Test1, 
     1000 * 8 
    ); 

</script> 

Интересно, почему первый setInterval никогда не выполняется? Как-то первый вызов функции javascript никогда не выполнялся. Вызов функции отображается в html (источник просмотра), но он никогда не выполнялся.

Если я копирую первый setInterval и вставляю его прямо под первым, поэтому у меня есть 2 идентичных вызова функции, только один из них выполняется.

Консоль записывает только «Test ...» каждые 5000 миллисекунд.

Это ошибка в Grails?

+0

Дополнительная информация о функциях Grail, которые вы вызываете. Я создал скрипку только с вашими первыми двумя вызовами, и они работают: http://jsfiddle.net/s4yBM/ (см. Консоль) – Bojack

+0

Функция Grails Я называю это, используя представление: render (view: "view- дисплей "). – fasisi

+0

@ RamniqueSingh вы знаете какие-либо ссылки, которые говорят о правилах или ограничениях на выполнение вызова функции javascript в макете или просмотре Grails? – fasisi

ответ

0

Ответ на мой вопрос - просто привязать эти вызовы функций javascript к событию готовности документа.

<script type="text/javascript"> 


$(document).ready(
    function() 
    { 

    /* the first setInterval */ 
    setInterval(
     function() 
     { 
     console.log("Test..."); 
     }, 
     5000 
    ); 

    setInterval(
     function() 
     { 
     console.log("Test... (2)"); 
     }, 
     5000 
    ); 

    GetContent(1); 
    GetContent(2); 
    GetContent(3); 
    GetContent(4); 

    setInterval(
     Test0, 
     5000 
    ); 

    setInterval(
     Test2, 
     5000 
    ); 

    setInterval(
     ShowTime, 
     1000 * 10 
    ); 

    setInterval(
     Test3, 
     1000 * 9 
    ); 

    setInterval(
     Test1, 
     1000 * 8 
    ); 

    }; 

</script> 

Теперь все выполнено так, как ожидалось.

Смежные вопросы