布尔值不将true值更改为false

时间:2016-12-03 17:22:32

标签: javascript html function three.js boolean

我尝试做的背景:我使用three.js和标准html,css和js来创建一个网站,其中有两个网站,都使用显示和隐藏div。您可以按下许多按钮,显示一个div并隐藏所有其他按钮。这是在我的div.s js文件中。这显示在下面的代码中:

// Change to Bass
function changeToBass() {
    document.getElementById("2dBass").style.display = 'block';
    document.getElementById("2dDrums").style.display = 'none';
    bassDivActive = true;

单击运行此功能的按钮时,将调用此函数。在这种情况下,称为changeToBass。它隐藏了所有显示的div除外。然后它将一个名为bassDivActive的变量设置为true,在main.js文件中声明为false:

// Active Div Variables
var bassDivActive = false;
var drumsDivActive = false;

// Check if the key was pressed
    function checkKeyPressed3(i) {
        if (i.keyCode == "51") {
            checkActiveDiv();
        }
    }

checkActiveDiv() {
    if (bassDivActive == true) {
        console.log("Bass True");
        bassDivActive = false;
    } else if (drumsDivActive == true) {
        console.log("Drums True");
        drumsDivActive = false;
    }
}

这个main.js文件有很多其他代码用于加载与此问题无关的应用程序。这里,两个变量bassDivActive和drumsDivActive都设置为false。然后有一个函数检查数字3是否被按下,然后运行一个名为checkActiveDiv()的函数。此功能确实有效,键检查不是问题,问题出在checkActiveDiv()函数中。当bassDivActive设置为true时,通过在divs.js文件中从之前调用的changeToBass()函数,checkActiveDiv()函数记录" Bass True"然后,一旦执行了部分代码,就应该将bassDivActive设置为false。

但是,这是我遇到的问题。如果我然后运行相同的东西,但是drumsDivActive设置为true,则代码仍然是当它应该为FALSE时,说bassBivActive为TRUE。

编辑: - 要显示调用其他函数的位置,它们位于以下位置:

// Do raycast    
var intersectionsForward = raycasterForwardCollision.intersectObjects(barObjects, true);

// Check to see which objects the ray collides with
if (intersectionsForward.length > 0) {         

    for (var i = 0; i < intersectionsForward.length; i++) {
        switch (intersectionsForward[i].object.parent.name) {
            case "Bass":
                bassInfo.position.y = 8;
                locationSetBass();
            break;

            case "Drums":
                drumsInfo.position.y = 8;
                locationSetDrums();
             break;
        }
    }

// Change to Bass Div when "2" key is pressed
function locationSetBass() {
    // Add Event Listener to check when a particular key is pressed
    window.addEventListener("keydown", checkKeyPressed2, false);

    // Check if the key was pressed
    function checkKeyPressed2(i) {
        if (i.keyCode == "50") {
            changeToBass();
        }
    }   
}

0 个答案:

没有答案