2015-08-20 3 views
1

Я пытаюсь передать параметр анонимной функции. Но что-то не так, и я не могу понять это.Передача параметра анонимной функции

function getInfo(item) { 
 
    alert(item); //does not pass the item? 
 
} 
 
var param = "Param was passed successfully!"; 
 
var elementel = document.getElementById("AlretBtn"); 
 
elementel.addEventListener("click", getInfo.bind(null, param, false);
<button id="AlretBtn">Alert Item</button>

Что случилось с этим? Как я могу это исправить?

+3

Вам не хватает скобки в конце вызова 'addEventListener'. Проверьте консоль Javascript для сообщения об ошибке синтаксиса. – Barmar

+1

Возможно, потому что JS не является синтаксически действительным. –

ответ

2

Я не уверен, что вы намереваетесь делать, но вы не привязываете ничего к getInfo(). В случае, если вы хотите, чтобы связать обработчик щелчка на кнопке элемента:

function getInfo(item){ 
    alert(item); //does not pass the item? 
    console.log(this); // the button element instead of Window 
} 
var param = "Param was passed successfully!"; 
var elementel = document.getElementById("AlretBtn"); 
elementel.addEventListener("click", getInfo.bind(elementel, param, false)); 

И в случае, если вам не нужно привязать обработчик щелчка к нему, зачем с Bind() ?:

function getInfo(item){ 
    alert(item); //does not pass the item? 
} 
var param = "Param was passed successfully!"; 
var elementel = document.getElementById("AlretBtn"); 
elementel.addEventListener("click", function(){ getInfo(param); }); 

without bind()

+0

Спасибо Luls. Полезно. :) – Bekki

+0

Мое удовольствие! :) –

2

function getInfo(item) { 
 
    alert(item); //does not pass the item? 
 
} 
 
var param = "Param was passed successfully!"; 
 
var elementel = document.getElementById("AlretBtn"); 
 
elementel.addEventListener("click", getInfo.bind(null, param, false));
<button id="AlretBtn">Alert Item</button>

Вы пропускаете скобку. Я не знаю, используете ли вы среду IDE или какова ваша среда разработки. Но, попробуйте добавить валидатор синтаксиса javascript, это действительно делает разработку намного быстрее :)

+0

спасибо @davenewton удалил его. Это как рефлекс: O/ –

+2

вы имеете в виду плохую привычку;) – Robbie

+0

ahahahahahaah yep, что звучит более точно. @robbie –

Смежные вопросы