Вы можете использовать setTimeout()
, например:
var img1 = document.getElementById('my-img');
img1.onmouseover = function() {
setTimeout(function() {
this.src = 'my-img-2.png';
}, 1000); // 1000ms = 1s delay
};
Прежде всего, ваш код содержит несколько ошибок:
- Всегда пишите HTML-теги в нижнем регистре, не
<SCRIPT>
, а <script>
- Атрибут
langauge
не является допустимым атрибутом, используйте вместо него type="text/javascript"
или просто удалите его, если он не требуется.
И объект Image на самом деле не создает изображение на веб-сайте.Он предварительно загружает изображение, поэтому вы можете использовать его на своем сайте, не загружая его.Как в следующем примере:
<img src="/img/my-first-img.png" onmouseover="this.src = '/img/heavy-img.png'">
<script>
var heavyImg = new Image();
heavyImg.src = '/img/heavy-img.png'; // preload the img
</script>
Поскольку мы предварительно загружаем /img/heavy-img.png
, мы можем сразу увидеть тяжелое изображение, если навести курсор мыши на первое изображение.Если мы не предварительно загрузим img, он будет загружен при наведении мыши.
Вместо использования атрибута onmouseover
мы используем onmouseover
событие + обратный вызов в файле JS.Теперь мы можем добавить задержку:
<img src="/img/my-first-img.png" id="my-img">
<script>
var heavyImg = new Image();
heavyImg.src = '/img/heavy-img.png'; // preload the img
var myImg = document.getElementById('my-img'); // get the element with id="my-img" out of the DOM
// create a mouseover event
myImg.onmouseover = function() {
setTimeout(function() {
this.src = '/img/heavy-img.png' // load the img
}, 1000); // a delay of 1000ms = 1s
};
</script>