如果变量发生变化,请执行某些操作

时间:2019-01-29 08:56:12

标签: javascript jquery

如果用户未在全局变量“代码”中添加任何内容,我想禁用按钮。我试过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>

3 个答案:

答案 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