首页 > 解决方案 > 将函数内部的变量传递给其他函数而不更改其在 Javascript 中的值

问题描述

我有 2 个函数我想知道如何将在函数 generate() 中生成随机数的变量“foto”传递给函数 verify(),因为 indexOf 将验证在 generate() 上生成的数字函数并将检查此值是否在 verify() 中定义的数组之一中。

function generate() { 

    var score = document.getElementById('score');
    var foto  =   Math.floor(Math.random() *20) + 1;
    var fotoDOM = document.querySelector('.foto');
    fotoDOM.src = 'foto-' + foto + '.jpg';
    console.log(foto);
    document.getElementById('photo').style.animation ="appearPerson 1s";
    score.innerHTML = foto; 

}

document.querySelector('.btn').addEventListener('click', verify);     

function verify() {

    var yesMeetup = [0,1,2,3,4,5,6,7,8,9,10,12,13,14,15];
    var notMeetup = [16,17,18,19,20];
    var notButton = document.getElementById('no');
    var yesButton = document.getElementById('yes');
    var decisao = document.getElementById('decisao');
    debugger

    if (yesButton) {

        if (yesMeetup.indexOf(foto) ) {
            decisao.textContent = "You got it";
        } else if (notMeetup.indexOf(foto) ) {
            decisao.textContent = "wrong";
        }
    }

    else if (notButton) {

        if (notMeetup.indexOf(foto) ) {
            decisao.textContent = "You Gou it";
        } else if (yesMeetup.indexOf(foto) ) {
            decisao.textContent = "Wrong";
        }

    }
}

标签: javascriptarraysfunctionvariablesindexof

解决方案


在函数外部声明 foto 变量generate(这将使其成为全局变量),它将在verify函数中可用。我建议您阅读有关闭包的信息

var foto;
function generate(){ 

    var score = document.getElementById('score');
    foto = Math.floor(Math.random() *20) + 1;
    var fotoDOM = document.querySelector('.foto');
    fotoDOM.src = 'foto-' + foto + '.jpg';
    console.log(foto);
    document.getElementById('photo').style.animation ="appearPerson 1s";
    score.innerHTML = foto; 

}



document.querySelector('.btn').addEventListener('click', verify);     


function verify()
{


    var yesMeetup = [0,1,2,3,4,5,6,7,8,9,10,12,13,14,15];
    var notMeetup = [16,17,18,19,20];
    var notButton = document.getElementById('no');
    var yesButton = document.getElementById('yes');
    var decisao = document.getElementById('decisao');
    debugger
    if(yesButton){

        if(yesMeetup.indexOf(foto) ){

            decisao.textContent = "You got it";

        }else if(notMeetup.indexOf(foto) ){

            decisao.textContent = "wrong";
        }
    }

    else if (notButton){

        if(notMeetup.indexOf(foto) ){

            decisao.textContent = "You Gou it";


        }else if(yesMeetup.indexOf(foto) ){

            decisao.textContent = "Wrong";

        }

    }  
}

推荐阅读