从onclick到一个函数的JavaScript

时间:2012-02-24 19:46:41

标签: javascript jquery

我有链接点击的javascript代码:

 document.getElementById('giddy').onclick = function {
        alert(this.href);
    };

我想分开它的功能部分......我有

 document.getElementById('giddy').onclick = poro(this);
    function poro(yyyy) {
        alert(yyyy.href);
    };

但它不起作用(在警报中未定义)...我做错了什么?

6 个答案:

答案 0 :(得分:2)

您无需将this作为参数传递。 this将成为函数调用时的上下文。你应该只有:

document.getElementById('giddy').onclick = poro;
function poro() {
    alert(this.href);
};

答案 1 :(得分:0)

摆脱(this)并在函数中使用this而不是yyyy

document.getElementById('giddy').onclick = poro;
function poro() {
    alert(this.href);
};

答案 2 :(得分:0)

您正在立即调用poro函数。 基本上,你告诉Javascript元素的onclick值将等于调用poro(this [window] )函数的结果。

要解决这个问题,你可以将poro(this)函数包装在一个空函数中,如下所示:

document.getElementById('giddy').onclick = function(){poro(this)} function poro(yyyy) { alert(yyyy.href); };

您可能还需要考虑使用eventListener,因为它允许扩展空间。

答案 3 :(得分:0)

几乎就在那里!你应该这样做:

document.getElementById('giddy').onclick = function(){ poro(this); }
function poro(yyyy) {
    alert(yyyy.href);
};

注意poro(this);包含在匿名函数中。

答案 4 :(得分:0)

我建议使用addEventListener代替onclick方法。

试试这个:

var giddy = document.getElementById('giddy');
giddy.addEventListener('click', function(e) { poro(this); }, false);
function poro(yyyy) {
  alert(yyyy.href);
}

答案 5 :(得分:0)

因为你正在使用jquery:

$('#giddy').click(function(){ poro($(this));});

或者您可以使用bind()功能

$("#giddy").bind("click", $(this), poro);