【问题标题】:troubles with js logic gatesjs逻辑门的问题
【发布时间】:2021-12-18 19:13:08
【问题描述】:

我试图学习 javascript 来编写网站,我已经知道 html 和 css,并考虑制作一个简单的逻辑门,但是一旦我构建了它,我就无法让它工作。这是带有以下脚本的 html 文档。

<!DOCTYPE html>
<html>
<body>
<p id="logic">xor: 0 or: 0 and: 0</p>
<button onclick="thisScript()">script</button>
<script>
let A = 1
let B = 1
function thisScript() {
if ((A == 1 || B == 1)&& !(A == 1 && B == 1)) {
let xor = 1
} else {
let xor = 0
}
if (A == 1 || B == 1) {
let or = 1
} else {
let or = 0
};
if (A == 1 && B == 1) {
let and = 1
} else {
let and = 0
};
document.getElementById("logic").innerHTML = `xor: ${xor} or: ${or} and: ${and}`
};
</script>
</body>
</html>

我尝试在每个 if/else 语句中移动 dom,但它仍然没有工作 它仍然说变量 xor 未定义

【问题讨论】:

    标签: javascript html dom logic


    【解决方案1】:

    这只是一个变量范围问题,您的变量的范围是if 语句,这意味着它们无法访问您函数中的最后一行代码。下面的 sn-p 使变量成为全局变量,但将它们限定为函数也有效(第二个 sn-p)。结帐this webpage 了解更多关于 JS 作用域的信息。

    let A = 1
    let B = 1
    let xor, and, or;
    
    function thisScript() {
      if ((A == 1 || B == 1) && !(A == 1 && B == 1)) {
        xor = 1
      } else {
        xor = 0
      }
      if (A == 1 || B == 1) {
        or = 1
      } else {
        or = 0
      };
      if (A == 1 && B == 1) {
        and = 1
      } else {
        and = 0
      };
      document.getElementById("logic").innerHTML = `xor: ${xor} or: ${or} and: ${and}`
    };
    <!DOCTYPE html>
    <html>
    
    <body>
      <p id="logic">xor: 0 or: 0 and: 0</p>
      <button onclick="thisScript()">script</button>
    
    </body>
    
    </html>

    let A = 1
    let B = 1
    
    
    function thisScript() {
      let xor, and, or;
      if ((A == 1 || B == 1) && !(A == 1 && B == 1)) {
        xor = 1
      } else {
        xor = 0
      }
      if (A == 1 || B == 1) {
        or = 1
      } else {
        or = 0
      };
      if (A == 1 && B == 1) {
        and = 1
      } else {
        and = 0
      };
      document.getElementById("logic").innerHTML = `xor: ${xor} or: ${or} and: ${and}`
    };
    <!DOCTYPE html>
    <html>
    
    <body>
      <p id="logic">xor: 0 or: 0 and: 0</p>
      <button onclick="thisScript()">script</button>
    
    </body>
    
    </html>

    【讨论】:

    • 非常感谢,我不知道 javascript 是这样工作的。如果我使用 var 语句而不是 let 语句,它会起作用吗?
    • 是的,因为var 将变量的范围设置为函数而不是 if 语句,所以它会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多