我正在尝试执行以下操作:
我有一组图像并选择(下拉)HTML 元素,每个元素 30 个。我试图在从 1 到 30 的循环中使用 AddEventListener 以便当我更改选择的值时,图像 src 会更新(并且图像会更改)。
AddEventListener 函数是这样的:
function AddEventListener(element, eventType, handler, capture)
{
if (element.addEventListener)
element.addEventListener(eventType, handler, capture);
else if (element.attachEvent)
element.attachEvent("on" + eventType, handler);
}
我试过了,它奏效了:
var urlfolderanimalimages = "http://localhost/animalimages/";
var testselect = "sel15";
var testimg = "i15";
AddEventListener(document.getElementById(testselect), "change", function(e) {
document.getElementById(testimg).src = urlfolderanimalimages + document.getElementById(testselect).value;
document.getElementById(testimg).style.display = 'inline';
if (e.preventDefault) e.preventDefault();
else e.returnResult = false;
if (e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true;
}, false);
但是后来我尝试在循环中调用它,但它不起作用。添加了事件,但是当我更改任何选择时,它将更新最后一个(ID 为 i30 的图像)。
var urlfolderanimalimages = "http://localhost/animalimages/";
for (k=1;k<=30;k++) {
var idselect = "sel" + k;
var idimage = "i" + k;
AddEventListener(document.getElementById(idselect), "change", function(e) {
document.getElementById(idimage).src = urlfolderanimalimages + document.getElementById(idselect).value;
document.getElementById(idimage).style.display = 'inline';
if (e.preventDefault) e.preventDefault();
else e.returnResult = false;
if (e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true;
}, false);
}
我究竟做错了什么?我是 JavaScript 的新手(以及一般的编程),很抱歉引起呕吐的代码 :(