我需要暂停执行代码,直到用户点击网页2次

时间:2016-06-09 20:45:12

标签: javascript

我想运行for循环,但我不希望它一次执行。

for(var i = 0; i < array1.length;i++){
    var tempArray[];
    var tempArrayRevised = [];
confirm("Click the page twice!");
    //This is where I want the code to pause until the webpage has been clicked on twice

    for(var i = 0; i < 2; i++){
        tempArrayRevised.push(tempArray[i+1]);
    }
    array2.push(tempArrayRevised);
    //unhighlight position
}

3 个答案:

答案 0 :(得分:0)

runned=false;
window.addEventListener("dblclick", function(){
if(runned==true){
    for(var i = 0; i < 2; i++){
tempArrayRevised.push(tempArray[i+1]); } 
array2.push(tempArrayRevised);}}

for(var i = 0; i < array1.length;i++){
var  tempArray[]; 
var tempArrayRevised = [];
confirm("Click the page twice!");
runned=true;
}

这样的东西?

答案 1 :(得分:0)

它会是这样的:

for (var i = 0; i < array1.length; i++) {
    var tempArray[];
    var tempArrayRevised = [];
    var pageClickCount = 0;

    if (confirm("Click the page twice!")) {
        document.body.addEventListener('click', function() {
            pageClickCount += 1;
            execRest();
        });
        document.body.addEventListener('dblclick', function() {
            pageClickCount += 2;
            execRest();
        });
    }

    function execRest() {
        if (pageClickCount >= 2) {
            for (var i = 0; i < 2; i++) {
                tempArrayRevised.push(tempArray[i + 1]);
            }
            array2.push(tempArrayRevised);
            //unhighlight position
        }
    }
}

答案 2 :(得分:0)

我不完全确定你为什么这样做,但根据提供的信息,这里有几行代码:

  1. 开始循环'thingArray'并递增'loopCount'var
  2. 当'loopCount'等于2时,我们会跳出循环并绑定click事件
  3. 当click事件触发两次时,我们调用'resume'函数来循环其余的项目。
  4. 变量loopCount不是必需的,但是我把它放在那里,以便你可以参考它来创建你正在创建的这个过程中发生的其他逻辑。显然,您可以在循环中使用局部i var进行简单的增量检查。

    'break'语句是此处的关键组件,代码主要用于演示。

    小提琴:https://jsfiddle.net/jbird/2zza826j/

    在浏览器控制台中,您将看到每个click事件的消息,最后,当循环在'resume'函数中完成时,您将看到整数4,这显然是数组的长度。

    哦,我不建议直接在窗口上绑定用户发起的事件。

    var clickTarget = document.querySelectorAll('.click-target')[0],
        loopCount = 0,
        clickCount = 0,
        thingArray = ['thing1', 'thing2', 'thing3', 'thing4'],
        thingDoneArray =  [];
    
    function start() {
        for (var i = 0; i < thingArray.length; i++) {
            loopCount += 1;
    
            thingDoneArray.push(thingArray[i])
    
            if(loopCount == 2) {
                // Bind your click event
                clickTarget.addEventListener('click', onClick);
    
                // Alert the user
                alert('Click the page twice...for some reason.');
    
                // Break out of the loop (this is the important part)
                break;
            }
        }
    }
    
    function resume() {
        for(var i = 0; i < thingArray.length - thingDoneArray.length; i++) {
            loopCount += 1;
        }
    
        console.log(loopCount);
    }
    
    function onClick(evt) {
            evt.preventDefault();
    
        clickCount += 1;
    
        console.log('1 click event happened.');
    
        if(clickCount == 2) {
          clickTarget.removeEventListener('click', onClick);
          resume();
        }
    }
    
    start();