Я создаю галерею с помощью функции наведения курсора мыши, чтобы изображение приближалось к другому div. Галерея должна изменить изображение на div изображения, но функция не считывает URL-адрес изображения как фоновый URL-адрес. Ниже мой код:
</head>
<body>
<h1>Image Zoom</h1>
<p>Mouse over the image:</p>
<div class = "row">
<a href = "#" onclick = "setImage(this);"><img class = "gallery" id = "image1" src = "img_nature.jpg" /></a>
<div class = "column">
<img src = "img_nature.jpg" alt = "Nature" style = "width:100%" onclick = "setImage(this);">
</div>
<div class = "column">
<img src = "img_snow.jpg" alt = "Snow" style = "width:100%" onclick = "setImage(this);">
</div>
<div class = "column">
<img src = "img_mountains.jpg" alt = "Mountains" style = "width:100%" onclick = "setImage(this);">
</div>
<div class = "column">
<img src = "img_lights.jpg" alt = "Lights" style = "width:100%" onclick = "setImage(this);">
</div>
</div>
<div class = "img-zoom-container">
<img id = "myimage" src = ""width = "300" height = "240">
<div id = "myresult" class = "img-zoom-result"></div>
</div>
<p>The image must be placed inside a container with relative positioning.</p>
<p>The result can be put anywhere on the page, but must have the class name "img-zoom-result".</p>
<p>Make sure both the image and the result have IDs. These IDs are used when a javaScript initiates the zoom effect.</p>
<script>
// Initiate zoom effect:
imageZoom("myimage", "myresult");
function setImage(imgParent) {
document.getElementById("myimage").src = imgParent.childNodes[0].src;
var src =imgParent.childNodes[0].src:
}
</script>
</body>
Изображение скрипта https://www.w3schools.com/howto/howto_js_image_zoom.asp
Пожалуйста, помогите решить эту проблему
Вопрос не ясен, но я вижу проблему с вашей функцией setImage
. Функция назначается встроенной для каждого элемента img
, кроме myImage
, поэтому вызов childnodes[0]
не имеет смысла — вам нужен src самого изображения, чтобы вы могли получить к нему доступ, используя this
внутри функции, например:
function setImage( img ) {
document.getElementById('myimage').src=this.src;
}
или
использование стиля события
function setImage( e) {
document.getElementById('myimage').src=e.target.src;
}
Предположительно, вы используете код, найденный в W3Schools, так что, возможно, вы сможете адаптировать его под себя - хотя и не тестировалось никоим образом.
function setImage( e ) {
let img=document.getElementById( 'myimage' );
let result=document.getElementById( 'myresult' );
switch( e.target.tagName.toLowerCase() ){
case 'img': img.src=e.target.src; break;
case 'a': img.src=e.target.querySelector('img').src; break;
}
// adapted from code found on w3schools
/*
result.style.backgroundImage = "url('" + img.src + "')";
result.style.backgroundSize = ( img.width * cx ) + "px " + ( img.height * cy ) + "px";
*/
}
вышеприведенное не будет работать при назначении тега a
(например: <a href='' onclick='setImage(this);'>
)~ Сначала я этого не заметил.
Спасибо за ответ, я пытался, но изображения не отображаются в div.
<div id = "myresult" class = "img-zoom-result" style = "background-image: url(""); background-size: 2250px 1800px; background-position: 0px -233.438px;"></div>