Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:If语句-两个变量?_Javascript_Jquery_If Statement_Input_Conditional - Fatal编程技术网

Javascript:If语句-两个变量?

Javascript:If语句-两个变量?,javascript,jquery,if-statement,input,conditional,Javascript,Jquery,If Statement,Input,Conditional,我试图检查level是什么,degree是什么,那么total是某个字段的值。该代码仅适用于示例1,这使我认为我需要变量中的度数 示例: level=1;度=终端;1_T=205 level=2;度=非终结符;2\u NT=230 我做错了什么?我想知道是否有办法定义第二个变量,就像我在第3行对level所做的那样,可能应该有定义度的东西。你必须声明你的变量degree,否则它将失败,因为如果在使用它之前没有定义degree,它的值将未定义 $(function(){ $(".level

我试图检查level是什么,degree是什么,那么total是某个字段的值。该代码仅适用于示例1,这使我认为我需要变量中的度数

示例:

  • level=1;度=终端;1_T=205
  • level=2;度=非终结符;2\u NT=230

我做错了什么?我想知道是否有办法定义第二个变量,就像我在第3行对level所做的那样,可能应该有定义度的东西。

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

$(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());
    }
  });
})
您的代码应该是:

$(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”
立即为真,所以不管是否定义了
degree
。但在例2中,第一次测试失败,并且没有定义
变量。

什么是
$(“.level input”&&&“.degree input”)
变量
在哪里?根据您的语句
if(level==“1”| | degree==“Terminal”){
应该是
if(level==“1”&°ree==“Terminal”){
@j08691我想象OP想要连接一个基于两个不同选择器的
更改
处理程序,即
$(.level input,.degree input”)。更改(…)
我是javascript新手,正在努力学习-没有理由否决我的问题伙计们:)我感谢任何帮助!@Pugazh这就是我不确定的-放在哪里。@j08691正如Phrogz回答的那样,我需要使用基于级别和学位输入的更改处理程序。否决是因为您编写的代码无法工作,因为第2行。(同时,仅供参考,“声明”和“示例”两个词拼错了。)嗨,Darius,谢谢你的回复-我在发布之前试过了,但没有成功:(第2行的好主意!嗨,Phrogz,我知道你在那里做了什么,是的,它应该是&。即使有了这个更改,它仍然不起作用-选择任何级别都会预设1_T值。@Nestalna然后你必须调试你的代码。在Chrome调试器中设置断点。检查变量的值,并将它们与你的期望值进行比较。Step thro实时查看您的代码,并问自己“为什么计算机会做出这样的选择?”您的值中是否有空格使字符串不完全相同?欢迎来到Stack Overflow,也欢迎来到软件开发。您的大部分工作是学习如何像计算机一样思考,以及如何了解计算机在做什么。向他人寻求帮助是一个好主意,但不是唯一的前进方向。谢谢或者你的建议和回复Phrogz,我已经做了好几天了,所以我想我会问。故障排除非常棒,我会继续做,我只是不太懂javascript,不知道在哪里以及如何添加度变量。我会在找到答案后报告。如果你不知道如何使用Google Chrome调试器,我强烈建议你让您阅读并熟悉它(特别是设置断点、使用控制台计算表达式以及单步执行代码)。
$(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());
    }
    });
})