【发布时间】:2011-03-20 05:33:10
【问题描述】:
每次之前加载的图像完成加载时,我都会尝试加载新图像。 函数 create_photo_list 工作正常。它创建了一组需要加载的照片。如果不需要加载,则数组为空。问题是,当没有更多要加载的项目时,它会一直调用 load_next_photo 函数。
我每次在函数中调用 registerEventHandler 的原因是因为如果我不这样做,则在下一张照片加载时不会调用该函数。
function registerEventHandler(node, event, handler) {
if (typeof node.addEventListener == "function")
node.addEventListener(event, handler, false);
else
node.attachEvent("on" + event, handler);
}
// Remove an HTML element event handler such as onclick
// ex: unregisterEventHandler($("textfield"), "keypress", showEvent);
function unregisterEventHandler(node, event, handler) {
if (typeof node.removeEventListener == "function")
node.removeEventListener(event, handler, false);
else
node.detachEvent("on" + event, handler);
}
function load_next_photo() {
var loading_list = create_photo_list();
alert(loading_list.length);
if (loading_list.length > 0) {
img[loading_list[0]]['loaded'] = 1;
registerEventHandler($("load_img"), "onload", load_next_photo());
$("load_img").src = img[loading_list[0]]['img'];
}
else {
alert("nothing");
unregisterEventHandler($("load_img"), "onload", load_next_photo())
}
unregisterEventHandler($("load_img"), "onload", load_next_photo())
}
【问题讨论】:
-
只是好奇,你为什么不使用 jquery 作为你所有的事件监听代码?
-
我是一名业余开发人员,我以前从未听说过它;)不过,我真的更喜欢解决方法。
-
不不,我的意思是所有的
$("load_img")电话。这看起来像 jquery(除非你有自己的框架设置)。 -
我会在这里从 load_next_photo 中删除 ():
..registerEventHandler($("load_img"), "onload", load_next_photo());
标签: javascript dom javascript-events