|
|
|
| Всем привет, в общем цель такова:
var Object=document.getElementById('ID');
var timer = setInterval("myFunction(Object)", 100);
function myFunction(elem){
alert(elem.id);
}
|
или
var Object=document.getElementById('ID');
var timer = setInterval("myFunction("+Object+")", 100);
function myFunction(elem){
alert(elem.id);
}
|
И конечно-же ничего не происходит ( хорошего ) :-(
Как передать обьект в функцию с использованием setInterval или setTimeOut ? | |
|
|
|
|
|
|
|
для: Fear.86
(29.03.2007 в 19:32)
| | А не называйте объекты ключевыми словами, и второе пойдёт. | |
|
|
|
|
|
|
|
для: 12345
(29.03.2007 в 19:41)
| | Блин это пример!
а вот второй не катит... | |
|
|
|
|
|
|
|
для: Fear.86
(29.03.2007 в 19:44)
| | все нашел решение :-)
на Onload :
function Load(){
Function.prototype.bind = function(object) {
var method = this;
return function() {
return method.apply(object, arguments)
}
}
}
|
в скрипте :
var Object=document.getElementById('ID');
var timer = setInterval(myFunction.bind(Object), 100);
function myFunction(){
alert(this.id);
}
|
| |
|
|
|
|
|
|
|
для: Fear.86
(29.03.2007 в 19:50)
| |
setInterval (всё что здесь написано, должно быть ГЛОБАЛЬНЫМ, time);
setTimeout (всё что здесь написано, должно быть ГЛОБАЛЬНЫМ, time);
|
И неважно, что это - переменная, либо имя функции... должно быть глобальным, т.е. определённым вне функций.
Тогда и будет работать. | |
|
|
|
|
|
|
|
для: CNT
(29.03.2007 в 20:48)
| | Или определено в функции, но без var.
Да, не второй, а первый пример, если не писать ключевое слово на месте переменной.
Object1=document.getElementById('ID');
var timer = setInterval("myFunction(Object1)", 100);
function myFunction(elem){
alert(elem.id);
}
|
| |
|
|
|
|
|
|
|
для: 12345
(30.03.2007 в 12:31)
| | 12345
Интересно а вы пробовали это использовать ?
И глобалны вариант тоже не катит, функция создается и фызывается в нутри функциии, я уже не говорю про рекурсивный вызов функции чере определенный период времени, к тому-же зачем ломать голову ведь я уже написал на 100% рабочий вариант... | |
|
|
|
|
|
|
|
для: Fear.86
(30.03.2007 в 13:19)
| | Не пробовал, а какие могут быть проблемы?
Вот попробовал, работает:
<script>
onload=function(){o1=document.getElementById('id1');
var timer=setInterval("ff(o1)", 2000);
}
function ff(elem){ alert(elem.id);}
</script>
<div id=id1>123</div>
| var o1, естественно, не будет. Да и "var timer=" можно опустить, так как теряет смысл внутри функции.
Смысл в том, чтобы знать принципы, а не быть привязанным ко множеству случайных примеров. В Вашем примере есть некоторое излишество - непонятно, откуда это bind взялось.
А, понял, это 2 куска 1 примера. Так вот, тот первый кусок - излишество; работает, как видите, без него. Но к конкретной задаче может что угодно понадобиться. | |
|
|
|
|
|
|
|
для: 12345
(30.03.2007 в 14:09)
| | Работает относительно нориально, но есть проблема: таким образом у вас о1 обьявляется глобальной переменной, а это не есть гуд... так как переменная должна быть локальная иначе с ума можно сойти обзывая все переменные разными именами, избегая перекрытия с другой функцией, но всеравно спасибо полезная информация :-) | |
|
|
|
|
|
|
|
для: Fear.86
(30.03.2007 в 16:53)
| | Jyb в любом случае должны быть глобальными для существования между функциями. Свойство объекта - тоже глобальное в этом смысле. Что использовать - дело вкуса и сложности проекта. | |
|
|
|