2016-08-27 4 views
0

Я создаю ссылку тега (anchor tag) динамически используя javascript. Существует функция javascript, которая будет запущена событием, и она создаст ссылку на javascript.Проблема с javascript onclick

Я уже упоминал необходимые атрибуты для вновь созданного тега привязки с помощью javascript. Теперь я также упомянул событие onclick на этом якорь-теге.

Проблема заключается в том

что onclick событие вызывается при создании тега привязки. И он стреляет за это один раз. В следующий раз, когда я нажимаю на ссылку, я не могу получить желаемый результат.

Javascript код:

function waybill() 
{ 
    var mail_link = document.createElement("a"); 
    mail_link.href = "javascript:void(0)"; 
    mail_link.className = 'animated bounceInDown'; 
    mail_link.innerHTML = "Mail Waybill"; 
    mail_link.onclick = abc_test(); 
    var holder_div = document.getElementById("holder"); 
    holder_div.appendChild(mail_link); 
} 
function abc_test() 
{ 
    alert("mail link clicked"); 
} 

Я получаю предупреждение только один раз и даже не щелкая. Пожалуйста, помогите мне.

+0

где html-код? –

ответ

3

mail_link.onclick = abc_test() будет ссылаться на abc_test и присвоить его возвращаемое значение mail_link.onclick.

Если вы просто хотите, чтобы ссылаться на функцию, а не называть его, оставить из ():

mail_link.onclick = abc_test; 

Добавление слушателей событий является одна из тех вещей, что много старых браузеров делают по-своему , и это немного беспорядочно, чтобы добавить поддержку для всех из них. Sicnce вопрос помечен JQuery, вы могли бы сделать все это в JQuery и имеют поддержку браузера обрабатываются для вас:

$('<a/>', { 
    href: 'javascript:void(0);', 
    'class': 'animated bounceInDown', 
    text: 'Mail Waybill', 
}).appendTo('#holder').click(abc_test); 
+1

Нам действительно нужен канонический для этого, если его уже нет. –

+0

Спасибо @ Дэвид .. Он работает. – Abhradip

1

Проблема заключается в том, что вызов abc_test() будет выполнять функцию при использовании только abc_test будет передавать ссылку к функции. в этом случае вам нужно изменить строку:

mail_link.onclick = abc_test(); 

с линией:

mail_link.onclick = abc_test; 
+0

Спасибо @vankov – Abhradip

1

Это потому, что вы примените функцию вместо нее ссылаться.


mail_link.onclick = abc_test(); - Это вызовет функцию при инициализации mail_link.onclick = abc_test; - Это добавит ссылку функции на onClick, так что она вызовет эту функцию, пока вы нажимаете ссылку привязки.

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