Инкремент с остатком не работает - PullRequest
0 голосов
/ 04 июля 2018

В моем сценарии компьютер щелкает по вкладкам контактов в WhatsApp Web и для каждого проверяет, находится ли человек в сети или нет. Это делается с помощью цикла, который начинается снова, когда достигается контактный номер 16. В любом случае, цикл не работает, а переменная «i» не увеличивается. Это странно, поскольку, если я заменю selectContact (${i}) на console.log, приращение работает. Может быть ${} мешает обновлению i?

var i = 1
setInterval(function () {
    selectContact(`${i}`)

    if (document.getElementsByClassName("O90ur")[0] !== undefined) {
    var online = document.getElementsByClassName("O90ur")[0].innerHTML
        if (online == "online") {
        console.log(`${i}`)};
                        }
    i = i % 16 + 1
}, 1000);

Вот код для selectContact, если проблема должна лежать внутри.

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

contacts = [];
chat_div = [];

function triggerMouseEvent(node, eventType) {
    var event = document.createEvent('MouseEvents');
    event.initEvent(eventType, true, true);
    node.dispatchEvent(event);
}

function getChatname(){
    $("#pane-side > div > div > div").find("._2FBdJ >    div._25Ooe").each(function(){ 
        contacts.push($(this).text());
        chat_div.push($(this));
    })  
}

function selectContact(name){
    getChatname()
    for (i = 0; i < contacts.length; i++){
        if (name.toUpperCase() === contacts[i].toUpperCase()){
             triggerMouseEvent(chat_div[i][0],"mousedown")
        }
    }
}

1 Ответ

0 голосов
/ 04 июля 2018

Вы пропустили оператор var, объявляющий i в вашем цикле for, то есть он перезаписывает ваш глобальный i.

function selectContact(name){
    getChatname()
    for (var i = 0; i < contacts.length; i++){
        if (name.toUpperCase() === contacts[i].toUpperCase()){
             triggerMouseEvent(chat_div[i][0],"mousedown")
        }
    }
}
...