我有链接点击的javascript代码:
document.getElementById('giddy').onclick = function {
alert(this.href);
};
我想分开它的功能部分......我有
document.getElementById('giddy').onclick = poro(this);
function poro(yyyy) {
alert(yyyy.href);
};
但它不起作用(在警报中未定义)...我做错了什么?
答案 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);