我正在尝试在数组中设置链接,所以我有:
<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或不是对象。这样做的正确方法是什么?
答案 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();
}
});