原型函数创建元素并使用在加载时调用的继承而不是单击

时间:2016-01-11 11:40:27

标签: javascript oop

如果以下是愚蠢的问题我很抱歉,这是我第一次尝试使用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

非常感谢。

1 个答案:

答案 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