2016-09-29 4 views
0

Могу ли я добавить eventListener в JavaScript к флажку или мне нужно использовать этот атрибут в html onclick = someFunc(), чтобы вызвать функцию. Я установил a fiddle, где я попытался добавить eventListener, но это не дает ожидаемого результата.Добавление eventListener к флажку

var checkb = document.getElementById("checkbox1"); 

(function() { 

    checkbFunc(checkb); 

    function checkbFunc(checkb) { 
     checkb.addEventListener("click", function(e) { 
      if (checkb.checked) { 
       alert("i am checked"); 

      } else { 
       alert("i am not checked") 
      } 
     }); 
    } 
}); 
+0

Вы никогда не выполняете функцию. Вы имеете в виду * Немедленно вызывать * это выражение функции? – Li357

+0

Смотрите это [Демо] (http://jsfiddle.net/JsUWv/5368/)! –

+0

@AndrewL. с другими функциями, написанными так, это работает! – Stophface

ответ

1

Да, вы можете. Просто разворачивать ваш код от всех функций, а также использовать change событие вместо этого, и он должен работать нормально

var checkb = document.getElementById("checkbox1"); 

checkb.addEventListener("change", function(e) { 
    if (this.checked) { 
     alert("i am checked"); 
    } else { 
     alert("i am not checked") 
    } 
}); 

FIDDLE

+0

Или выполнить выражение функции, используя '(function() {...})();' – Li357

0

Вы можете сделать наоборот, как этот

var checkb = document.getElementById("checkbox1"); 

(function() { 

    checkbFunc(checkb); 

    function checkbFunc(checkb) { 
     checkb.addEventListener("click", function(e) { 
      if(checkb.checked) { 
       alert("i am checked"); 

      } else { 
       alert("i am not checked") 
      } 
     }); 
    } 
})(); // <--added this  

Demo

0

Вы можете просто удалить свою анонимную функцию

var checkb = document.getElementById("checkbox1"); 
 

 
checkbFunc(checkb); 
 
    
 
function checkbFunc(checkb) { 
 
    checkb.addEventListener("click", function(e) { 
 
    if(checkb.checked) { 
 
     alert("i am checked"); 
 

 
    } else { 
 
     alert("i am not checked") 
 
    } 
 
    }); 
 
}
<input type="checkbox" id="checkbox1"/>

Или, лучше использовать document.ready блок JQuery.

0

Ваш код не работает, потому что основные анонимные функции не выполняются.

Код, указанный ниже, должен работать на вас.

var checkb = document.getElementById("checkbox1"); 

(function() { 

    checkbFunc(checkb); 

    function checkbFunc(checkb) { 
     console.log(checkb); 
     checkb.addEventListener("click", function(e) { 
      if(checkb.checked) { 
       alert("i am checked"); 

      } else { 
       alert("i am not checked") 
      } 
     }); 
    } 
}() // Add these round braces); 
Смежные вопросы