У меня проблема с вызовом функции с параметром внутри функции setTimeout. В основном я пытаюсь создать небольшую онлайн-игру, где я создаю очередь команд, а затем выполняю их по одному (каждый из них занимает некоторое время, чтобы показать визуализацию).Переменная теряется при передаче в качестве параметра в setTimeout()
К сожалению, кажется, что я не могу передать какую-либо переменную в качестве параметра внутри setTimeout(). Хотя переменная существует, когда я вызываю функцию, она не существует позже, когда она выполняется. Функция не отслеживает переданное значение.
Есть ли какие-либо решения? Большое спасибо за любую помощь. Вот код, я использую:
function executeCommands() {
var commands = document.getElementsByClassName("cmdplace");
var timeout = 0;
for (i = 0; i < commands.length; i++) {
console.log(commands[i].childNodes[0]); //variable exists
setTimeout(function() {go(commands[i].childNodes[0]);}, timeout+=400); //Uncaught TypeError: Cannot read property 'childNodes' of undefined
console.log(commands[i].childNodes[0]); //variable still exists
}
}
function go(command) {
//do somethig based on the passed command
}
что пойти()? .. – baao
Ах, извините. go() - это моя функция, которая делает что-то, основанное на переданной команде. –
@PetrHofman, вы можете увидеть мой ответ ниже – Aruna