У меня есть следующий javascript в MSIE:
setTimeout(myFunction, 1000, param );
похоже, что он работает во всех браузерах, кроме Internet Explorer. Параметр просто не передается функции. глядя на отладчик, это undefined.
У меня есть следующий javascript в MSIE:
setTimeout(myFunction, 1000, param );
похоже, что он работает во всех браузерах, кроме Internet Explorer. Параметр просто не передается функции. глядя на отладчик, это undefined.
param
в Internet explorer указывает, является ли код в myFunction
JScript, JavaScript или VBscript Смотрите также: MSDN. Он не ведет себя как другие браузеры.
Следующее будет работать:
setTimeout(function() {
myFunction(param);
}, 1000);
Предыдущая строка точно не имитирует setTimeout
в Firefox и т.д. Чтобы передать переменную, не затронутую более поздним обновлением переменной param
, используйте:
setTimeout( (function(param) {
return function() {
myFunction(param);
};
})(param) , 1000);
Internet Explorer не позволяет передавать такие параметры. Вам нужно будет сделать это явно из функции обратного вызова:
setTimeout(function(){
myFunction(param);
}, 1000);
Цитата из MDN:
Обратите внимание, что передача дополнительных параметров функции в первом синтаксисе не работает в Internet Explorer.
Взгляните на http://www.makemineatriple.com/2007/10/passing-parameters-to-a-function-called-with-settimeout
Похоже, вам понадобится что-то вроде этого:
setTimeout(function(){ myFunction(param) }, 1000);
Это не параметр. По-видимому, этот последний аргумент обозначает язык сценариев.
Вместо этого используйте анонимную функцию:
setTimeout(function() {
myFunction(param);
}, 1000);
Использовать анонимную функцию:
setTimeout(function() { myFunction(param) }, 1000);
Как насчет этого:
setTimeout(function(){
myFunction(param);
}, 1000);
вы можете использовать закрытие:
setTimeout(function(){myFunction(param)}, 1000);