| 
		
			Сообщение от Maksimchik
			
		
	 | 
	| 
		Я разобрался. Получается если что onmouse(move/out/...) какбы выполняют код из самого тега, и поэтому не находило переменных.
	 | 
	
если таков вывод - то "нет, не разобрался".
 
	
	| 
		
			Сообщение от Maksimchik
			
		
	 | 
	| 
		 Если можно как то полегче обойти, прошу в студию. ^_^
	 | 
	
конечно, для этого мы здесь.
window.onload = function(){  // *!*(0)*/!*
	var menuimgs = document.getElementsByTagName("img");  // *!*(1)*/!*
        /* КОД.....  */
			menuimgs.item(i).onmouseout = "menuimgs.item(i).style.width = '32px';"; // *!*(2)*/!*
        /* КОД */
}
Начну я свой ответ с того, что в JS есть области видимости. (наверняка Вы знаете, что это такое. Если нет - прошу погуглить 

 ). Т.е. переменная, определённая с локальной области, будет невидима в глобальной.
Отлично. что дальше?
Как видим на строке с отметкой 
0, у нас (у Вас) там имеется функция-обработчик события завершения загрузки страницы. Т.е. функция-обработчик имеет свою область видимости (Ваш К.О.)...
Копаем дальше. Отметка 
1 при исполнении этой функции создаётся локальная область видимости, и в неё помещается 
menuimgs (очевидно). 
Далее в 
onmouseout мы помещаем строку-функцию, которая, как ожидается, должна нормально хавать локальную область видимости. Отметка 
2. А вот тут и ошибочка. Почему? 
Ответ прост :
Строка эта исполняется, как код функции. Какой единственный способ так сделать? Правильно, конструктор функций new Function. А он видит только глобальную область видимости. А т.к. переменная не определена в глобальной области - её нет. Это и вызывает ошибку.
Пример кода в тему :
var foo = "foo";
(function () {
    var bar = "bar";
    try { 
        new Function("", "alert(foo + bar)")();
    } catch (e) { 
        alert(':)');
    }
})();
Как решить? подсказка : обработчики событий - это функции, а не строки 
