2013-08-27 46 views
0

我正在学习Javascript并遇到问题。 我的HTML:Javascript单击()循环

<a id="1" class="same" href="1">click</a> 
<a id="1" class="same" href="1">click</a> 
<a id="2" class="same" href="1">click</a> 
<a id="3" class="same" href="1">click</a> 
<a id="3" class="same" href="1">click</a> 
<a id="4" class="same" href="1">click</a> 

和JS:

var dataall = []; 
var a = document.querySelectorAll('.same'); 
for (var i = 0; i < a.length; i++) { 
    var id = a[i].id; 
    dataall.push(id); 
} 
data = dataall.filter(function(elem, pos) { 
    return dataall.indexOf(elem) == pos; 
}) 
i = 0; 
Click(data, i); 

function Click(data, i) { 
    setTimeout(function() { 
     document.getElementById(data[i]).click(); 
     if (i < data.length) { 
      i++; 
      Click(data, i); 
     } else { 
      alert('done'); 
     } 
    }, 10000) 
} 

如何点击每一个的ID 1 2 3 4,而不是1 1 2 3 3 4? 感谢

+1

ID必须是唯一的。 – Konsole

+2

'ID'应该是唯一的,为什么你有多个'a'标签具有相同的'ID'呢? –

+2

而ids不能以数字开头。 – putvande

回答

0

ID必须是唯一的,不能以数字开头。如果你想要使用代码。

试试这个:

var dataall = []; 
var a = document.querySelectorAll('.same'); 
for (var i = 0; i < a.length; i++) { 
    var id = a[i].id; 
    if(dataall.indexOf(id)==-1) 
    dataall.push(id); 
} 
data = dataall.filter(function(elem, pos) { 
    return dataall.indexOf(elem) == pos; 
}) 
i = 0; 
Click(data, i); 

function Click(data, i) { 
    setTimeout(function() { 
     if (i < data.length) { 
      alert("id: "+data[i]); 
      document.getElementById(data[i]).click(); 
      i++; 
      Click(data, i); 
     } else { 
      alert('done'); 
     } 
    }, 100) 
} 

if(dataall.indexOf(id)==-1)将检查是否已经存在对应ID阵列与否。 (重复值不会被添加)。

DEMO FIDDLE

+0

它给出的警报是准确的 如何通过ID获得点击? – nguyentu

+0

检查更新的代码和演示 – Unknown

+0

谢谢,但不工作 – nguyentu