如果以下是愚蠢的问题我很抱歉,这是我第一次尝试使用OO JS,这超出了那里的基本教程。 如果我理解了以下问题,就会形成类似于人的突破: - )
基本上,我想创建一个元素 - 一个带有背景图片的div,并将其附加到按钮上。(稍后我想创建一个额外的按钮,用另一个替换上面的图片)。 图片存储在数组中。
如果我用注释掉的第37-57行来运行它,它一切正常,但我不想每次都写这个函数来创建下一个元素。
所以我创建了函数对象" Nation"(第4到30行)并希望在通话中传递2个参数," land"(国家名称)和&#34 ; imageIndex"(数组中的图片索引)。
这是问题的起点。我想在点击上调用新国家(行,但是它会直接在页面加载时执行。如何解决这个问题?
我现在还没有通过第二个参数,因为我无法弄清楚如何做到这一点,所以我只使用第13行来设置BG pic。但目标是通过向函数传递第二个参数来设置BG pic。
var croats = new Nation("croatia");
document.getElementById("newDom")
.addEventListener("click", croats.create("croatia"));
这是事件处理,代码在这里:
http://codepen.io/damianocel/pen/gPggLB
非常感谢。
答案 0 :(得分:1)
您只需将函数作为addEventListener
的第二个参数传递:
document.getElementById("newDom").addEventListener("click", function () {
croats.create("croatia")
});
例如参见:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Example
当您的代码当前已设置时,它会在附加侦听器时执行croats.create()
,而不是存储对函数的引用(称为" 侦听器"或&事件发生时执行#34; 回调")。
更新了CodePen:http://codepen.io/anon/pen/KVqgdP