Функционально, да, они одинаковы: -C
устанавливает флаг «edit / no-edit» в положение «no», выбирая HEAD
в качестве коммита, из которого нужно получить исходное сообщение, а [112 ] устанавливает флаг без установки коммита, который по умолчанию остается равным HEAD
. Обратите внимание, что вы можете комбинировать --no-edit
с -c
для достижения того же результата, что и -C
.
Когда Вы делаете это:
var func_call = 'slide_down(' + element + ', ' + max_height + ');';
Вы преобразовываете элемент в строку, таким образом, Ваш тайм-аут будет похож
slide_down("[Object]", 100);
который, очевидно, не будет работать.
То, что необходимо делать, создает закрытие - оно немного сложно, но в основном Вы создаете функцию, и локальная переменная от старой функции все еще доступна в новой функции.
function slide_down(element, max_height)
{
if(element.clientHeight < max_height)
{
var factor = 10;
var new_height = (element.clientHeight + factor >= max_height) ? max_height : (element.clientHeight + factor);
element.style.height = new_height + 'px';
var func = function()
{
slide_down(element, max_height);
}
window.setTimeout(func, 10);
}
}
Также 10 немного коротко для тайм-аута - я рекомендовал бы использовать 50 в качестве минимума.
В первую очередь, это "Прямо сейчас у меня есть функция, которая является рекурсивной (называет себя через setTimeout)", крики setInterval мне, если Вы не варьируетесь период.
Во-вторых, это вызвано тем, что ссылка на элемент потеряна в строке concat, как element.toString () будет" [возражают]". Попытайтесь передать в идентификаторе, можно повторно найти, сохранить ссылку уровень, или (поскольку я только что досмотрел матовую точку b до конца), расширенная форма метода.
У меня был подобный опыт. При передаче элемента в следующий раз через это становится преобразованным в строку в вызове функции, поэтому когда функция работает, это пытается найти, что названный элемент [возражает] .string или чему-то, вместо того, что Вы предназначили.
Попытайтесь изменить свой параметр функции, чтобы взять идентификатор элемента и сделать, document.getElementById () называет первую вещь в функции.
Проблема с Вашим кодом состоит в том, что Вы - сбой для передачи параметра элемента.
Вместо:
var func_call = 'slide_down(' + element + ', ' + max_height + ');'; window.setTimeout(func_call, 10);
попытка с помощью анонимной функции:
window.setTimeout(function() { slide_down(element, max_height) }, 10);
@matt.b: передача аргументов в вызов метода setTimeout (путь Вы делаете) не поддерживается в IE.
Две вещи:
1. Существует альтернативный способ звонить setTimeout()
в котором Вы передаете функцию и параметры, а не строку для выполнения. На самом деле Геккон руководство DOM заявляет что Ваша версия вызова setTimeout()
не рекомендуется.
Вместо:
var func_call = 'slide_down(' + element + ', ' + max_height + ');';
window.setTimeout(func_call, 10);
Попробуйте это вместо этого:
window.setTimeout(slide_down, 10, element, max_height);
Обновление: как RoBorg упомянул, это не может работать в IE, таким образом, Вы могли бы также проигнорировать его.
2. У меня есть чувство тот вызов setTimeout()
из функции, которая была вызвана себя setTimeout()
или не позволяется или не работает хорошо. Я предполагаю, что Вы объединяете вызовы в цепочку как это, потому что Вы хотите, чтобы код неоднократно выполнялся? Если так, именно это window.setInterval()
для.