JavaScript代码中的函数或事件出现问题

JavaScript代码中的函数或事件出现问题,javascript,html,css,Javascript,Html,Css,我用HTML、CSS和Javascript编写了这个应用程序,它创建了一个放大镜,将用于3个图像中的一个(由用户选择),但是当我从一个图像切换到另一个图像时,使用组合框放大镜会变得笨拙(重复) 我试着用几种方法修改代码,但我仍然没有发现它有什么问题 代码如下: * { 框大小:边框框; } .img放大镜容器 { 位置:相对位置; } .img放大镜 { 位置:绝对位置; 边框:3px实心#000000; 边界半径:50%; 光标:无; /*设置放大镜的大小*/ 宽度:100px; 高度:

我用HTML、CSS和Javascript编写了这个应用程序,它创建了一个放大镜,将用于3个图像中的一个(由用户选择),但是当我从一个图像切换到另一个图像时,使用组合框放大镜会变得笨拙(重复)

我试着用几种方法修改代码,但我仍然没有发现它有什么问题

代码如下:


*
{
框大小:边框框;
}
.img放大镜容器
{
位置:相对位置;
}
.img放大镜
{
位置:绝对位置;
边框:3px实心#000000;
边界半径:50%;
光标:无;
/*设置放大镜的大小*/
宽度:100px;
高度:100px;
}
功能放大(imgID、缩放)
{
var img,玻璃,w,h,bw;
img=document.getElementById(imgID);
//创建放大镜。
glass=document.createElement(“DIV”);
设置属性(“类”、“img放大镜”);
//插入放大镜。
img.parentElement.insertBefore(玻璃,img);
//设置放大镜的背景属性。
glass.style.backgroundImage=“url('“+img.src+”)”;
glass.style.backgroundRepeat=“无重复”;
glass.style.backgroundSize=(img.width*zoom)+“px”+(img.height*zoom)+“px”;
体重=3;
w=玻璃偏移网络宽度/2;
h=玻璃。离光/2;
//当有人在图像上移动放大镜时,执行“移动放大镜”功能。
玻璃。添加显示器(“鼠标移动”,移动放大镜);
img.addEventListener(“mousemove”,移动放大镜);
功能放大镜(e)
{
变量pos,x,y;
//防止在图像上移动时可能发生的任何其他操作。
e、 预防默认值();
//获取光标的x和y位置。
pos=getCursorPos(e);
x=位置x;
y=位置y;
//防止放大镜位于图像外部。
如果(x>图像宽度-(带缩放))
x=图像宽度-(带缩放);
如果(x图像高度-(h/缩放))
y=图像高度-(h/缩放);
如果(y

//用户可以从3张照片中选择使用放大镜。 //当组合框的选定项发生更改时,将触发“onchange”事件,并执行声明的函数。 document.getElementById(“CBFotos”).onchange=function() { var comboBoxFotos=document.getElementById(“CBFotos”); //将新组合框的选定值放在Img元素的“src”属性中,并带有“id=foto”。 document.getElementById(“foto”).attributes[“src”].value=comboBoxFotos.options[comboBoxFotos.selectedIndex].value; 放大(“foto”,3); }; //使用图像的“id”和放大镜的强度调用“放大”函数。 放大(“foto”,3);

正如兰迪所说,在创建其他放大镜之前,必须先卸下放大镜

我已使用解决方案更新了您的“onchange”代码:

document.getElementById("CBFotos").onchange = function() {
  var comboBoxFotos = document.getElementById("CBFotos");
  // Puts the new ComboBox's Selected Value in the "src" Attribute of the Img Element with the "id=foto".
  document.getElementById("foto").attributes["src"].value = comboBoxFotos.options[comboBoxFotos.selectedIndex].value;

  var magnifyEl = document.getElementsByClassName("img-magnifier-glass")[0];
  magnifyEl.parentNode.removeChild(magnifyEl);

  magnify("foto", 3);
};


每次调用
放大()
(每次更改组合框),都会创建一个新的div,其中包含一个新的放大镜。它在做你让它做的事。谢谢你,兰迪。圣保罗奥布里加多。米尔马拉维哈斯功能酒店。安第斯拉珀托马斯。。。não acertei没有目标!佩德罗·菲科·费利兹·克特纳多·贝姆。。阿布拉索
document.getElementById("CBFotos").onchange = function() {
  var comboBoxFotos = document.getElementById("CBFotos");
  // Puts the new ComboBox's Selected Value in the "src" Attribute of the Img Element with the "id=foto".
  document.getElementById("foto").attributes["src"].value = comboBoxFotos.options[comboBoxFotos.selectedIndex].value;

  var magnifyEl = document.getElementsByClassName("img-magnifier-glass")[0];
  magnifyEl.parentNode.removeChild(magnifyEl);

  magnify("foto", 3);
};