【问题标题】:Javascript: If statement - two variables?Javascript:如果语句 - 两个变量?
【发布时间】:2017-01-22 09:51:33
【问题描述】:

我正在尝试检查 level 是什么,而 degree 是什么,那么 total 是某个字段的值。该代码仅适用于示例 1,这让我认为我需要变量中的学位。

例子:

  • level = 1; degree = Terminal; 1_T = 205
  • level = 2; degree = NonTerminal; 2_NT = 230
 $(document).ready(function(){
      $(".level input" && ".degree input").change(function(){
        var level = $(".level input").val();

        if (level == "1" || degree == "Terminal"){
          $(".total input").val($(".1_T input").val());
        }
        else if (level == "2" || degree == "NonTerminal") {
          $(".total input").val($(".2_NT input").val());
        }
        });
    })

我做错了什么?我试图弄清楚是否有一种方法可以定义第二个变量,就像我在第 3 行对 level 所做的那样,可能应该有一些东西可以定义程度。

【问题讨论】:

  • $(".level input" && ".degree input") 应该做什么?
  • 变量degree在哪里?根据您的声明if (level == "1" || degree == "Terminal"){ 应该是if (level == "1" && degree == "Terminal"){
  • @j08691 我想 OP 想要连接一个基于两个不同选择器的 change 处理程序,也就是 $(".level input, .degree input").change(…)
  • 我是 javascript 新手并正在努力学习 - 没有理由拒绝我的问题 :) 我感谢任何帮助! @Pugazh 那是我不确定的 - 放在哪里。 @j08691 Phrogz 回答我需要使用基于级别和度数输入的更改处理程序。

标签: javascript jquery if-statement input conditional


【解决方案1】:
$(function(){
  $(".level input, .degree input").change(function(){
    var level  = $(".level input").val();
    var degree = $(".degree input").val();

    // Perhaps you want (level=="1" && degree=="Terminal") ?
    if (level == "1" || degree == "Terminal"){
      $(".total input").val($(".1_T input").val());
    }
    else if (level == "2" || degree == "NonTerminal") {
      $(".total input").val($(".2_NT input").val());
    }
  });
})

【讨论】:

  • 嗨 Phrogz,我看到你在那里做了什么,是的,应该是 &&。即使进行了更改,它仍然无法正常工作 - 选择任何级别都会预设 1_T 值。
  • @Nestalna 然后你必须调试你的代码。在 Chrome 调试器中设置断点。检查变量的值并将它们与您的期望进行比较。实时单步执行您的代码并问自己“为什么计算机会做出这样的选择?”您的值中是否有空格使您的字符串不完全相同?欢迎来到 Stack Overflow,欢迎来到软件开发。你的大部分工作是学习如何像计算机一样思考,以及如何弄清楚计算机在做什么。正如你所做的那样,向他人寻求帮助是个好主意,但不是唯一的出路。
  • 感谢您的建议和回复 Phrogz,我已经在这几天了,所以我想我会问的。故障排除很棒,我将继续这样做,我只是不太了解 javascript,不知道在哪里以及如何添加 degree 变量。当我找到答案时,我会报告!
  • 如果您不知道如何使用 Google Chrome 调试器,我强烈建议您阅读并熟悉它(尤其是设置断点、使用控制台评估表达式以及单步执行)代码)。
【解决方案2】:

你必须声明你的变量degree,否则它会失败,因为如果在你使用它之前没有定义度数,它的值将是undefined

你的代码应该是:

$(document).ready(function(){
  $(".level input, .degree input").change(function(){
    var level = $(".level input").val();
    var degree = $(".degree input").val();

    if (level == "1" || degree == "Terminal"){
      $(".total input").val($(".1_T input").val());
    }
    else if (level == "2" || degree == "NonTerminal") {
      $(".total input").val($(".2_NT input").val());
    }
    });
})
  • 第 2 行:更改了 jQuery 选择器。你的只匹配第一个字符串 -> ".level input" 然后不计算度数是否改变
  • 第 4 行:我们定义变量 degree 以供以后使用

为什么它适用于示例 1?

javascript 布尔运算是惰性检查的。因为您的第一个测试 level == "1" 立即为 True,所以它不关心 degree 是否已定义。但在示例 2 中,第一次测试失败,并且您的 degree 变量未定义。

【讨论】:

  • 投了反对票,因为您编写的代码由于第 2 行而无法工作。(另外,仅供参考,“declare”和“example”这两个词拼写错误。)
  • 嗨,Darius,感谢您的回复 - 我在发布之前尝试过,但没有成功:(第 2 行的好主意!
【解决方案3】:

当一个输入值插入你想要一个事件触发时,其他输入另一个事件,如果输入的第一个按钮出现,其他按钮消失怎么办,每个按钮都会触发不同的事件

【讨论】:

    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多