Javascript addEventListener似乎不起作用
addEventListener不工作,即使我确保访问if(警报工作)。 我正在使用firefox,所以现在不需要为IE“附加事件”Javascript addEventListener似乎不起作用,javascript,addeventlistener,Javascript,Addeventlistener,addEventListener不工作,即使我确保访问if(警报工作)。 我正在使用firefox,所以现在不需要为IE“附加事件” function addEvent(type,fnName,obj,cap) { if(obj.addEventListener) { alert("I am here"); obj.addEventListener(type,fnName,cap); } } function changeBgColor(
function addEvent(type,fnName,obj,cap)
{
if(obj.addEventListener)
{
alert("I am here");
obj.addEventListener(type,fnName,cap);
}
}
function changeBgColor()
{
var wrap = document.getElementById("wrapper");
nbClicks++;
if (1 == nbClicks )
{
wrap.style.backgroundColor = lightCoral;
}
if (2 == nbClicks )
{
wrap.style.backgroundColor = lightGreen;
}
}
function init()
{
var nbClicks = 0;
var wrap = document.getElementById("wrapper");
addEvent("click",changeBgColor,wrap,false);
}
window.onload = init;
它不工作,因为
nbClicks
未在changeBgColor
中初始化
var
向函数声明一个局部变量,在本例中为init
如果将changeBgColor
更改为
var changeBgColor = (function() {
var nbClicks = 0;
return function() {
var wrap = document.getElementById("wrapper");
nbClicks++;
if (1 == nbClicks )
{
wrap.style.backgroundColor = 'lightCoral';
}
if (2 == nbClicks )
{
wrap.style.backgroundColor = 'lightGreen';
}
};
})();
此外,
backgroundColor
需要一个字符串,而不是未定义的
(因为没有声明这些变量)。它不起作用,因为nbClicks
没有在changeBgColor
中初始化
var
向函数声明一个局部变量,在本例中为init
如果将changeBgColor
更改为
var changeBgColor = (function() {
var nbClicks = 0;
return function() {
var wrap = document.getElementById("wrapper");
nbClicks++;
if (1 == nbClicks )
{
wrap.style.backgroundColor = 'lightCoral';
}
if (2 == nbClicks )
{
wrap.style.backgroundColor = 'lightGreen';
}
};
})();
此外,
backgroundColor
需要一个字符串,而不是未定义的
(因为这些变量没有声明)。我发现您的代码有两个直接的问题:
(function(){
var nbClicks = 0;
function addEvent(type,fnName,obj,cap) {
if(obj.addEventListener) {
obj.addEventListener(type,fnName,cap);
}
}
function changeBgColor() {
var wrap = document.getElementById("wrapper");
nbClicks++;
if (1 == nbClicks ) {
wrap.style.backgroundColor = 'lightCoral';
}
if (2 == nbClicks ) {
wrap.style.backgroundColor = 'lightGreen';
}
}
function init() {
var wrap = document.getElementById("wrapper");
addEvent("click",changeBgColor,wrap,false);
}
window.onload = init;
})();
我发现您的代码存在两个直接问题:
(function(){
var nbClicks = 0;
function addEvent(type,fnName,obj,cap) {
if(obj.addEventListener) {
obj.addEventListener(type,fnName,cap);
}
}
function changeBgColor() {
var wrap = document.getElementById("wrapper");
nbClicks++;
if (1 == nbClicks ) {
wrap.style.backgroundColor = 'lightCoral';
}
if (2 == nbClicks ) {
wrap.style.backgroundColor = 'lightGreen';
}
}
function init() {
var wrap = document.getElementById("wrapper");
addEvent("click",changeBgColor,wrap,false);
}
window.onload = init;
})();
在
changeBgColor
中放置一条log语句,这样您就知道它是否到达了那里。是否定义了lightCoral
和lightGreen
呢?在changeBgColor
中放一条log语句,这样你就知道它是否到达了那里。是否定义了lightCoral
和lightGreen
?