опять про setTimeout
простенький скрипт.
'123' появляется ровно столько раз сколько выполняется условие [i]stat_type.options.selected==true alert функции testInterval не вызывается. что может быть не так?
function testInterval(param)
{
alert(param);
}
function form_getData ()
{
var stat_type = document.getElementsByName("stat_type")[0];
for (i=0; i<stat_type.options.length; i++)
{
if (stat_type.options[i].selected==true)
{
var someresult = setTimeout(function(){
alert(123);
testInterval(stat_type.options[i].value);
alert("after");
}, 1000);
}
}
}
|
|
да. действительно.
Цитата:
сейчас кое-что попробую. |
конечное решение:
function testInterval(param)
{
alert("simple text");
alert(param);
}
function form_getData ()
{
var stat_type = document.getElementsByName("stat_type")[0];
stat_type_len = stat_type.options.length;
for (i=0; i<stat_type_len; i++)
{
if (stat_type.options[i].selected==true)
{
//alert(stat_type.options[i].value);
var someresult = setTimeout(function(obj){
return function() {
alert(123);
testInterval(obj);
alert("after");
}
}(stat_type.options[i].value), 5000);
}
}
}
спасибо за помощь. p.s. Цитата:
|
кстати не понятно. возьмем такой пример.
<head>
<script type="text/javascript">
function f()
{
var x = document.getElementById('div');
setTimeout(function() { alert(x.innerHTML) }, 1000);
}
</script>
</head>
<body onload="f()">
<div id='div'>123</div>
</body>
it w-o-r-k-s чем он отличается от моего первого "не работающего"? |
В первом переменная i изменяется и на момент выполнения функции, переданной в setTimeout, имеет совсем другое значение.
|
а почему тогда браузер проругался что stat_type.options[i] is undefined а не выдал результат, соответствующий последнему значению переменно i?
|
for (var i=0; i<5; i++) alert(i);
alert('i= '+i);
Посмотри что выдаст такой скрипт, может сам поймёшь... |
почему-то мне кажется, что там будет i=4. сейчас проверю.
а не. всё верно i=5. значение ведь сперва увеличивается а потом уже проверяется условие. |
Цитата:
если так, то как бы он тогда с этим условием вошел в замыкание? если оно выполняется при i == i<stat_type.options.length-1 (по крайней мере я думаю что это так) |
| Часовой пояс GMT +3, время: 03:36. |