Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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" еще не загружен. Отсюда и ошибка. Нужно заменить прямой вызов ф-ции в последней строчке скрипта на вызов по событию:
Код

window.onload = move; // так ф-ция move станет обработчиком события загрузки всей страницы


И еще, по мелочи: document.all и атрибут name для картинки устарели, лучше использовать атрибут id и document.getElementById("id_элемента") соответственно. И в таймаут лучше подставлять не выражение в кавычках, а просто имя ф-ции (move) - иначе при каждом срабатывании таймаута неявно вызывается eval, а это лишняя нагрузка на проц...

Автор: Ghirik 11.6.2008, 22:53
SelenIT, благодаря таким людям, как Вы, мы постепенно учимся сдержанности... это я про себя.
Почему так? Если бы мне отетили так, как я отвечал в нескольких своих предыдущих постах - жестко и не сдержанно.... Скорбно, но я не умею переключиться на блажьи тона, когда вижу нелепицу. Это очень мешает мне всю жизнь, но я не умею.... smile 

Я могу привести кучу примеров, своих идиотских вопросов, которые задавал на винграде... Да Вы про них все помните... Каким то общим, Винградовским духом, меня переработали... Ну... я кнечно, над собой работаю постоянно... smile  Но Ваше влияние, какое то неимоверно жесткое... smile

Добавлено через 2 минуты и 40 секунд
Всего один литр на двоих... smile 

Господа модераторы, Вы и не такое терпели... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)