nguyentu
nguyentu

Reputation: 45

Javascript Click() Loop

I'm learning Javascript and having trouble. My HTML:

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

And 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)
}

How to click each one for an id 1 2 3 4, not 1 1 2 3 3 4? Thank

Upvotes: 1

Views: 6241

Answers (1)

Kiran
Kiran

Reputation: 20313

ID need to be unique and can't start with numbers. Still if you want to go with the code.

Try this:

    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) will check if already id is there in array or not. (duplicate values will not be added).

DEMO FIDDLE

Upvotes: 1

Related Questions