Для этого блока кода:переменной Javascript неожиданно неопределенными
if(!skipit)
{
var update_argument='';
if (document.formname.fieldname)
{
update_argument=document.formname.fieldname[document.formname.fieldname.selectedIndex].value;
}
window.setTimeout('updatepcols(update_argument)',250);
return false;
}
Я получаю ошибку в моем SetTimeout вызова, что «update_argument» было неопределенным. Когда я изменил строку, где я присвою ей значение нулевой строки от «var» до «window.», Ошибка исчезла, и код работал. Я бы предположил, что здесь есть проблема с областью, но я не следую ей. Почему update_argument не будет определен в этом случае, но поместить его в объект окна позволяет мне использовать его? (updatepcols - это функция, которая обновляет столбцы ценообразования.)
Возможно, вы объясните, ПОЧЕМУ это работает. – jfriend00
Это работает, потому что, когда вы передаете строку в 'setTimeout', это' eval'd в глобальной области. Когда вы передаете функцию, она может читать локальные переменные. –
P.S. Это хорошая практика * всегда * передавать функции 'setTimeout'. Никогда не пропускайте струны. –