| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Не работает динамическое изменение размеров img |
| Автор: Finder128 11.6.2008, 10:36 |
| Хочу сделать автосмену баннера с эффектом растягивающегося рисунка. Сделал пока что простенький скрипт, в котором в течении времени меняется размер изображения. Вроде всё работает, но перед этим выскакивает сообщение - такой-то объект null или не является объектом. Вот код, написанный мной: <script> var x1=1024 var y1=768 function move(){ if (x1>240){ x1-- y1=Math.round(x1*(160/240)) setTimeout("move()",1) document.all["block"].width=x1; document.all["block"].height=y1; } else {x1=1024} } move() </script> </head> <body> <div style="width:240;height:160;overflow:hidden;"> <img src="3.jpg" width="1024" height="768" name="block"> |
| Автор: SelenIT 11.6.2008, 12:41 | ||
Первый раз move вызывается, когда элемент по кличке "block" еще не загружен. Отсюда и ошибка. Нужно заменить прямой вызов ф-ции в последней строчке скрипта на вызов по событию:
И еще, по мелочи: document.all и атрибут name для картинки устарели, лучше использовать атрибут id и document.getElementById("id_элемента") соответственно. И в таймаут лучше подставлять не выражение в кавычках, а просто имя ф-ции (move) - иначе при каждом срабатывании таймаута неявно вызывается eval, а это лишняя нагрузка на проц... |
| Автор: Ghirik 11.6.2008, 22:53 |
| SelenIT, благодаря таким людям, как Вы, мы постепенно учимся сдержанности... это я про себя. Почему так? Если бы мне отетили так, как я отвечал в нескольких своих предыдущих постах - жестко и не сдержанно.... Скорбно, но я не умею переключиться на блажьи тона, когда вижу нелепицу. Это очень мешает мне всю жизнь, но я не умею.... Я могу привести кучу примеров, своих идиотских вопросов, которые задавал на винграде... Да Вы про них все помните... Каким то общим, Винградовским духом, меня переработали... Ну... я кнечно, над собой работаю постоянно... Добавлено через 2 минуты и 40 секунд Всего один литр на двоих... Господа модераторы, Вы и не такое терпели... |