Объект Image в JavaScript
Для работы с изображениями в JavaScript используется объект Image. Данный объект является очередным свойством объекта Document. И о том, как управлять изображениями через JavaScript, Вы узнаете из этой статьи.
Конструктор у объекта Image практически не используется (да и он классический). Методы у него присутсвуют (наследуются от объекта Object), но ничего интересного из себя не представляют. Поэтому в этой статье мы разберём самое важное в объекте Image - его свойства.
Прежде чем начать обрабатывать изображение необходимо его создать. Разумеется, создание происходит в HTML, поэтому знакомый Вам тег:
<img name = 'img' src = 'image1.jpg' />
Теперь мы можем обратиться к этому объекту через JavaScript:
document.write(document.img)
Как видите, обращение к объекту Image очень простое: сначала пишится объект Document, а затем его свойство с именем объекта Image (это имя мы задали в атрибуте "name"). В результате выполнения этого скрипта Вы увидите: "[object HTMLImageElement]". Это сработал метод toString(), но, впрочем, забудьте, что я сейчас написал - это тема будущих статей.
ВНИМАНИЕ: Необходимо соблюдать очень важное правило: нельзя обращаться к тому, чего ещё не существует. Какой вывод из этого можно сделать? Очень простой: пока не создано изображение, его нельзя обрабатывать. То есть Вы не можете запустить приведённый здесь скрипт ДО того, как появилось изображение. На это очень часто напарываются новички, поэтому не забывайте, что прежде чем работать с чем-либо, необходимо для начала это создать.
Теперь переходим к свойствам. Начнём со свойства border. Данное свойство отвечает за размер рамки вокруг изображения. Разумеется, мы его можем и прочитать, и записать. Давайте изменим размер рамки нашего изображения:
document.img.border = 5;
Разумеется, есть два свойства, отвечающие за ширину и высоту изображения. Это свойства width и height объекта JavaScript. Давайте их выведем:
document.write("Ширина изображения - " + document.img.width + "<br />");
document.write("Высота изображения - " + document.img.height);
И последнее свойство, которое мы рассмотрим - это src. Данное свойство отвечает за путь к картинке. И давайте с Вами решим такую задачу: есть картинка и есть кнопка. При нажатии на кнопку картинка меняется.
<script language = 'javascript'>
var flag = 0;
function changeImage() {
if (flag == 0) {
document.img.src = 'image1.jpg';
flag = 1;
}
else {
document.img.src = 'image2.jpg';
flag = 0;
}
}
</script>
<img name = 'img' src = 'image1.jpg' />
<form>
<input type = 'button' value = 'Сменить изображение' onClick = 'changeImage()' />
</form>
Теперь поясню, как работает данный скрипт. Сначала мы описываем саму функцию. Создаётся переменная flag. Это некий флаг, который переключается при смене изображения. Дальше идёт функция changeImage(), которая и занимается сменой изображения. Изображению присваивается тот путь к картинке, которому соответствует флаг. После смены изображения меняется и значение флага (чтобы в следующий раз было другое изображение). За пределами скрипта создаётся форма с одной кнопкой. Здесь обратите внимание на атрибут "onClick". Этот атрибут отвечает за обработку события "Клик мыши по кнопке". О событиях мы поговорим отдельно, но здесь достаточно понять принцип. В значении атрибута "onClick" стоит функция, которую надо выполнить при нажатии на кнопку. Таким образом, у нас и меняется изображение. Надеюсь, что понятно объяснил.
Остальные свойства объекта Image в JavaScript используется достаточно редко, поэтому я их опустил. А самое важное я Вам поведал. В следующей статье мы перейдём к следующему свойству объекта Document - объект Link.
Удачи!
-
- Михаил Русаков
Комментарии (31):
У меня не получается, у меня вместо картинки в таблицах двух, типо инпута такое "Рисунок" в двух. Можете помочь чем-нибудь?
Ответить
Не понятен вопрос.
Ответить
Ладно разобрался уже...
Ответить
Блин, и пришёл же такой набор слов в голову))))
Ответить
У меня не работает последний на странице скрипт. Видимо, по причине того, что из тела скрипта не работает ссылка на изображение. Ссылка на изображения работает только из кода html вне скипта. Еще подскажите, пожалуйста, где почитать как внутри языка Java в ссылках на изображения подниматься на папку вверх (если картинки лежат не в одной папке с html-файлом).
Ответить
Чтобы работало изображение, надо указывать правильно путь. Если скрипт находится в другом месте (например, в какой-нибудь папке), то путь будет совсем другим. А про Java на данном сайте ничего вообще нет, никогда не было и вряд ли будет.
Ответить
я не знал, что JavaScript и Java - это разные языки) Имел ввиду JavaScript
Ответить
Что касается подъёма вверх по папкам, то он аналогичен подъёму вверх в HTML, то есть "../".
Ответить
Спасибо!
Ответить
По поводу языка Java вот хороший ресурс. http://javarush.ru/ Сделано по принцыпу комикса, но зато как и на этом сайте: от простых вещей постепенно к более сложным
Ответить
Обязательно ли заключать input в форму? <form> <input type = 'button' /> </form>
Ответить
Нет, но лучше так не делать.
Ответить
Здравствуйте, Михаил. Подскажите, можно ли использовать в качестве свойства src строковую переменную? Спасибо.
Ответить
src и подразумевает только строку.
Ответить
я имел ввиду имя переменной, то есть например часть кода: st = 'image/' + '1.jpg'; document.img.scr = st; уже разобрался, понял что можно. не получилось с первого раза, потому что писал имя переменной в кавычках. вопрос другой возник, правда не подходит для этого топика. как вывести на "экран" переменную полученную в javascript в html. (знаю что не понятно, но как смог сформулировал :) ) Например переменную st='ыыы' нужно вписать в <span>бе-бе-бе-</span> чтобы получилось: бе-бе-бе-ыыы Как это сделать?
Ответить
st="бе-бе-бе"; st = st + "ыыы";
Ответить
не правильно поняли. как вывести переменную st в блоке span.
Ответить
Обратиться к блоку сначала нужно, для этого можно поставить у него id. Далее у этого блока есть свойство innerHTML, вот его и надо менять, тогда и будет меняться содержимое <span>.
Ответить
Спасибо, теперь понял.
Ответить
Привет, Михаил! по поводу переключения картинок при нажатии. Как сделать так, чтобы в переключении участвовало три изображения. Нужно что-то делать с переменной flag? добавлять условия?
Ответить
С тремя гораздо сложнее. Тут лучше уже делать массив со всеми изображениями и кликами вытаскивать следующий элемент. Плюс надо хранить в глобальной переменной текущий активный элемент (лучше индекс в массиве).
Ответить
<script type="text/javascript"> var flag = 0; function changeImage() { if (flag == 0) { document.img.src = 'fo.png'; flag = 1; } else { if(flag == 1) { document.img.src = 'fo1.png'; flag = 0.5; } else { document.img.src = 'globe.png'; flag = 0; } } } </script> Я пока попробовал без массива, такой код может быть? У меня работает, все три картинки при щелчке сменяются.
Ответить
Можно, но если потребуется 10 картинок, то замучаетесь подобным образом делать.
Ответить
У меня не сменяется изображение при нажатии на кнопку, где ошибка? <script language = 'javascript'> var flag = 0; function changeImage() { if (flag == 0) { document.img.src = 'C:\Users\ноутбук\Desktop\ихображения\барсик\1 (2).jpg'; flag = 1; } else { document.img.src = ''C:\Users\ноутбук\Desktop\ихображения\барсик\1.jpg'; flag = 0; } } </script> <img name = 'img' src = 'C:\Users\ноутбук\Desktop\ихображения\барсик\1.jpg' /> <form> <input type = 'button' value = 'Сменить изображение' onClick = 'changeImage()' /> </form>
Ответить
Пути надо указывать относительные и уж тем более без русских символов и пробелов.
Ответить
Михаил, подскажите. У объекта есть свойство background-image. Я хочу, чтобы путь к файлу (url) можно было задавать с помощью переменой. Как это сделать? path = 'image/im1.jpg'; document.getElementById('im1').style.background-image = 'url(path)'; Этот код не работает, потому что ищется картинка path.
Ответить
...bacgkground-image = path; - вот так попробуйте.
Ответить
Долго мучился с последним скриптом. Оказалось слишком тщательно списал и первый и второй скрипт, и пока не поменял в первом img name = 'img' на img name = 'img1' у второго скрипта замена не работала.
Ответить
Исправьте, пожайлуста, в предпоследнем абзаце "...чтобы в следующий раз было друое изображение..." слово "другое"
Ответить
Не работает в HTML5. Какой код должен быть для него?
Ответить
в if (flag == 0) { document.img.src = 'image1.jpg'; должно стоять image2.jpg а в else - image1.jpg. Иначе первый раз приходится дважды нажимать кнопку. А так все работает.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.