如何根据变量指定是否可以调用事件侦听器

How to specify whether event listeners can be called or not depending on a variable?

本文关键字:调用 事件 侦听器 是否 何根 变量      更新时间:2023-09-26

我有一个变量,它被分配了一个依赖于数据库中表中值的值。如何使用此变量来指定某些事件侦听器是否处于活动状态以及指定是否显示特定链接。

例如,我尝试过,但没有成功工作:

    var accessLevel = 0;
    var userLoggedIn = "<?php Print($userLoggedIn); ?>";
    var userlevel = "<?php Print($userLevel); ?>";
    function map_initialize()
    {
        ////CONCERNING THIS PART#########///
        if (accessLevel >= 2){ //WHEN LOADED THIS IS NOT REGISTERING ANY RIGHT CLICK EVEN WHEN accessLevel is over 2!
            google.maps.event.addListener(map, 'rightclick', function(event) {
            //Some function that I don't want to run if accessLevel is <2
            });
           }
     }

    ////THIS WORKS FINE BELOW JUST PROVIDING IT
    if (userLoggedIn == true) {
        if (userlevel == "0") {
            accessLevel = 0;
            console.log(accessLevel);
        }    
        else if (userlevel == "1") {
            accessLevel = 1;
                        console.log(accessLevel);
        }
        else if (userlevel == "2"){
            accessLevel = 2;
                        console.log(accessLevel);
        }
        else if (userlevel == "3"){
            accessLevel = 3;
                        console.log(accessLevel);
        }
        else if (userlevel == "4"){
            accessLevel = 4;
                        console.log(accessLevel);
        }
    }

我不知道这是否有意义,但基本上我希望能够根据accessLevel的值过滤某些可用的函数。这可能吗(特别是与谷歌地图元素一起使用),以及我该如何做到。

您应该在示例代码的第十三行中将)};更改为});

还将userLoggedIn == true更改为类似的内容

userLoggedIn.toLowerCase().trim() === "true"

假设$userLevel的可能值为TRUEFALSEtruefalse

解决了这个问题,我所要做的就是交换if statement的位置,使其也在点击事件侦听器中。

function map_initialize()
{

        google.maps.event.addListener(map, 'rightclick', function(event) {
            if (accessLevel >= 2){ 
                //Some function that I don't want to run if accessLevel is <2
            }
        });
 }