На самом деле это проблема, которая была создана при попытке ответить на другой вопрос: https://stackoverflow.com/questions/21517910/remove-elements-in-reverse-order/SetTimeout остановка после одного выполнения функции
я предоставил псевдокод и Дерек 朕 會 功夫 при условии кода. Однако, когда я хотел добавить короткую задержку в код, чтобы мы могли видеть, что происходит, он прекращает выполнение правильно. SetTimeOut останавливается после одного выполнения.
Fiddle: http://jsfiddle.net/UFfHX/
JQuery Код:
function RemoveNode(node) {
for (var i = node.children.length - 1; i >= 0; i--) {
setTimeout(RemoveNode(node.children[i]));
}
$(node).remove();
}
RemoveNode($(".parent")[0]);
Я попытался с помощью window.setTimeout()
и используя function(){}
внутри с вызовом, чтобы удалить узел, но это не сработало. В то же время, этот код выполняется правильно:
function RemoveNode(node){
for(var i = node.children.length - 1; i >= 0; i--){
RemoveNode(node.children[i]);
alert("hi");
}
$(node).remove();
}
RemoveNode($(".parent")[0]);
EDIT: Чтобы уточнить, я хочу добавить 2s ждать перед каждым вызовом RemoveNode в примере ниже.
function RemoveNode(node) {
for (var i = node.children.length - 1; i >= 0; i--) {
//Something like sleep(2000);
RemoveNode(node.children[i]);
}
$(node).remove();
}
RemoveNode($(".parent")[0]);
Ваш пост код, который не работает? ваши комментарии говорят, что вы добавили функцию() {} stuff .. измените свое сообщение как код, который НЕ работает. –
'setTimeout()' требует функции, которую нужно передать, в то время как вы проходите в результате функция. –
Это код, который не работает. Он должен удалить всю верхнюю бокс в jfiddle с интервалом в 2 с перед каждым вызовом для функции RemoveNode. Но он останавливается после 1 вызова, если я использую setTimeout. – Xyzk