Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не работает переменная (integer) в функции (https://javascript.ru/forum/css-html/12915-ne-rabotaet-peremennaya-integer-v-funkcii.html)

javasc 08.11.2010 19:17

Не работает переменная (integer) в функции
 
Не работает переменная (integer) в функции.

Так работает :
Цитата:

function drawScene() { // рисование сцены
gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
perspective(50, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0);
её вызов:
Цитата:

setInterval(drawScene, 1); // вызываем drawScene каждые 15 секунд.
Добавляем переменную и с ней уже весь код не рабочий.
Цитата:

function drawScene(inte) { // рисование сцены
gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
perspective(inte, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0);
её вызов:
Цитата:

setInterval(drawScene(50), 1); // вызываем drawScene каждые 15 секунд.
В чем причина?

exec 08.11.2010 19:21

Цитата:

setInterval(drawScene(50), 1); // вызываем drawScene каждые 15 секунд.
Где вы тут увидели 15 секунд?

setInterval(function() {
drawScene(50);
}, 15000);

javasc 08.11.2010 19:24

Это старый комментарий....там сейчас 1 секунда :-)

Подскажитепочему мой код с переменной не работает.

ksa 08.11.2010 20:46

А так?

setInterval('drawScene('+50+')', 15)

B@rmaley.e><e 08.11.2010 20:55

Цитата:

Сообщение от ksa
setInterval('drawScene('+50+')', 15)

Так лучше не делать.
setInterval(function(){
  drawScene(50);
}, 15); // каждые 15 миллисекунд
Цитата:

Сообщение от javasc
setInterval(drawScene(50), 1); // вызываем drawScene каждые 15 секунд.

Здесь вызывается не функция drawScene, а то, что она возвращает. А она ничего не возвращает, поэтому никакого интервала и не устанавливается.

ksa 08.11.2010 20:57

Цитата:

Сообщение от B@rmaley.e><e
Так лучше не делать.

Взято из примера в МСДН... :lol:

<SCRIPT>
function fnHide(oToHide){
   window.setTimeout("fnHide2(" + oToHide.id + ")", 3000);
}
function fnHide2(sID){
   var o = eval(sID);
   o.style.display="none";
}
</SCRIPT>
<INPUT TYPE=button VALUE="Now you see me ..." 
    ID="oHideButton" onclick="fnHide(this)">

monolithed 08.11.2010 22:07

Цитата:

Сообщение от ksa
Взято из примера в МСДН...

ksa Я тоже уже говорил, что МСДН это не лучший источник инфорамации - не имейте привычки давать примеры новичкам основанные чужом говнокоде.

Один из корректных примеров использования метода setTimeout()

<div style="background: blue; color: white; width: 0px; height: 20px;"></div>

<script type="text/javascript">
window.onload = function(){
    var i = 0;
    (function(){
        if(++i <= 300){
           var element = document.getElementsByTagName('div')[0];
           element.style.width = i+'px';
           element.innerHTML = parseInt(i/3)+'%';
           setTimeout(arguments.callee, 10);
        }
    })();
};
</script>

ksa 08.11.2010 22:12

Ну перестроиться на лучший манер никогда не поздно... :)

monolithed 08.11.2010 22:19

Цитата:

Сообщение от ksa
Ну перестроиться на лучший манер никогда не поздно...

К сожалению, такое бывает не часто

PS: выше пример добавил

ksa 08.11.2010 22:30

Цитата:

Сообщение от monolithed
выше пример добавил

Так куда там аргументы-то совать?


Часовой пояс GMT +3, время: 23:51.