[英]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.