处理onclick事件

时间:2011-08-12 08:31:06

标签: javascript javascript-events

我有一个包含链接的列表。我正在使用此代码访问它们:

function initAll() {

 var allLinks = document.getElementById("nav").getElementsByTagName("a");
 for (var i=0; i< allLinks.length; i++) {
    allLinks[i].onmouseover = showPreview;
    allLinks[i].onmouseout = function() {
         document.getElementById("previewWin").style.visibility = "hidden";
         allLinks[i].onclick=mainProcess;
        }
    }
}

function mainProcess(evt){
    alert(this.value);
    false;
}

这不是确切的代码,我想要做的是我需要识别链接被点击并在点击的链接的基础上执行一些功能。我不知道代码需要修改的位置...... Page在allLinks[i].onclick=mainProcess(this);行上给出了错误。

现在问题是我不知道应该如何处理这三个事件?

3 个答案:

答案 0 :(得分:1)

1)您将每个链接的onclick属性设置为 mainProcess()返回的值 - 它总是返回false。所以,实际上,你正在写allLinks[i].onclick = false;

2)直接定义事件处理程序时,事件触发时传递给它的参数是事件对象 - 而不是它被触发的元素。

要弄清楚元素,您可以查看事件对象,或者(因为处理程序已添加到元素本身),只需使用this,因为它将引用链接元素

for (var i = 0; i < allLinks.length; i++) {
   allLinks[i].onclick = mainProcess;
}

function mainProcess(event) {
{
    alert(this.value);
    return false;
}

答案 1 :(得分:0)

尝试更改为:

for (var i = 0; i < allLinks.length; i++) {
   allLinks[i].onclick = mainProcess;
}

function mainProcess(event) {
{
    alert(this.value);
    return false;
}

答案 2 :(得分:0)

您需要将此传递给mainProcess(link)。如http://www.quirksmode.org/js/events_tradmod.html中所述“没有括号!”和“这个”章节。看看,那里也有一个例子。应该是你需要的一切。