javascript 处理onclick事件

9fkzdhlc  于 2023-04-04  发布在  Java
关注(0)|答案(3)|浏览(165)

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

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;
}

这不是确切的代码,我想做的是,我需要识别链接被点击,并在链接点击的基础上执行一些功能.我不知道代码需要修改的地方...页面在allLinks[i].onclick=mainProcess(this);行给出错误.
现在的问题是,我不知道我应该如何处理这三个事件?

cczfrluj

cczfrluj1#

1)您将每个链接的onclick属性设置为**mainProcess()返回的值-它总是返回false。
2)当你直接定义一个事件处理器时,当事件触发时传递给它的参数是事件对象,而不是它被触发的元素。
要确定元素,您可以查看事件对象,或者(因为处理程序已添加到元素本身)简单地使用this,因为它将引用link元素

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

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

myzjeezk2#

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

am46iovg

am46iovg3#

尝试更改为:

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

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

相关问题