如果用户未在全局变量“代码”中添加任何内容,我想禁用按钮。我试过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>
答案 0 :(得分:1)
您应该使用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>
答案 1 :(得分:-1)
要在if条件下比较var的值,必须使用==
或===
运算符。您正在使用分配操作符。
let code = "";
$(document).ready(() => {
function codeCheck() {
if (code === "") { // <--
console.log("nothing")
} else if (code.indexOf("z")) {
console.log("do semething")
}
}
code = "z";
codecheck();
});
答案 2 :(得分:-1)
您需要弄清楚如何更新“ code”值。 如果通过按钮,则添加一个调用codeCheck方法的EventListener。在以下代码段中,我使用了jQuery change函数。
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中的变量中。 编辑:找到this answer on Stackoverflow that you might be interested in。