繁体   English   中英

如果变量发生变化,做一些事情

[英]do something if variable changes

如果用户没有在全局变量“代码”中添加任何内容,我想禁用按钮。 我尝试了 indexOf() 但是它只有一次反应性。 假设我有将“z”添加到“代码”全局变量中的按钮,它不会在 indexOf("z"); 中执行函数; 有人可以帮忙吗?

 let code = ""; $(document).ready(() => { function codeCheck() { if (code = "") { console.log("nothing") } else if (code.indexOf("z")) { console.log("do semething") } } code = "z"; codecheck();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

您应该使用includes函数来检查您的字符串是否包含子字符串

 let code = ""; $(document).ready(() => { function codeCheck() { if (code == "") { console.log("nothing") } else if (code.includes("z")) { console.log("do something") } } code = "z"; codeCheck(); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

要在 if 条件中比较 var 的值,您必须使用=====运算符。 您正在使用赋值运算符。

let code = "";

$(document).ready(() => {
    function codeCheck() {
        if (code === "") { // <--
            console.log("nothing")
        } else if (code.indexOf("z") > -1) {
            console.log("do semething")
        }
    }

    code = "z"; 
    codecheck();
});

您需要弄清楚值“代码”是如何更新的。 如果是通过按钮,则添加一个调用 codeCheck 方法的 EventListener。 在以下代码段中,我使用了 jQuery 更改函数。

 let code = ""; $(document).ready(() => { $("#myCode").change( function(ev) { let newVal = ev.target.value; // this will contain the value in the textbox code = newVal; codeCheck(); }); function codeCheck() { if (code == "") { console.log("nothing") } else if (code.includes("z")) { console.log("do something") } } });
 <input type="text" id="myCode" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

然后您可以迭代上述方法并添加一个按钮。

<button onClick="addZToMyCode()">Add Z</button>
//JS
function addZToMyCode() {
  code += "z";
  codeCheck();
}

AFAIK 我不认为我们可以将事件侦听器放在 JS 中的变量中。 编辑: 在 Stackoverflow 上找到了您可能感兴趣的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM