模拟鼠标点击一系列标签

时间:2009-12-07 23:03:46

标签: javascript html

我正在尝试在数组中设置链接,所以我有:

<a href="#" onClick="javascript: doFunction();" name="mylinks">link1</a>
<a href="#" onClick="javascript: doFunction();" name="mylinks">link2</a>
<a href="#" onClick="javascript: doFunction();" name="mylinks">link3</a>
...

我想让javascript像这样访问数组:

function doAll()
{
    var i, l = document.mylinks.length;
    for (i = 0; i < l; i++)
        document.mylinks[i].on_click();
}

然而,当我执行doAll()时,它告诉我document.mylinks.length为null或不是对象。这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

您应该使用document.getElementsByName

function doAll(){
    var l = document.getElementsByName('mylinks');
    for (var i in l)
        l[i].onclick();
}

答案 1 :(得分:1)

首先,使用dom检索你的锚元素

<div id="linkContainer">
    <a href="#" onClick="alert('onclick 1');" name="mylinks1">link 1</a>
    <a href="#" onClick="alert('onclick 2');" name="mylinks2">link 2</a>
    ...
</div>

并点击onclick你应该创建一个虚拟事件并发送它(如果支持)

function doClick(link)
{
    if (document.createEvent)
    {
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        link.dispatchEvent(evt);
    }
    else if (link.click)
        link.click();
}

然后把它放在一起:

var links = document.getElementById("linkContainer").childNodes;
for(var l = 0; l < links.length; l++)
{
    if(links[l].tagName && links[l].tagName.toLowerCase() == "a")
    {
        alert(links[l].name);
        doClick(links[l]);
    }
}

哪个有效,我已经测试过了。

答案 2 :(得分:0)

使用jquery:

<a class="mylinks">link1</a>
<a class="mylinks">link2</a>
<a class="mylinks">link3</a>

$(document).ready(function ()
{
    $('a.mylinks').click(doFunction);
    var doAll = function ()
    {
        $('a.mylinks').click();
    }
});