2016-09-14 46 views
-3

我試圖檢查水平是否是某種程度,然後總數是某個字段的值。該代碼僅適用於示例1,這讓我覺得我需要變量中的度數。Javascript:如果語句 - 兩個變量?

例子:

  • 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中定義了應該定義度數的東西。

+5

什麼是$(「。level input」&&「.degree input」)'應該這樣做? – j08691

+1

變量'degree'在哪裏?根據你的陳述'if(level ==「1」|| degree ==「Terminal」){'should be'if(level ==「1」&& degree ==「Terminal」){' – Pugazh

+1

@ j08691我想象OP想要連接一個基於兩個不同選擇器的'change'處理程序,也就是'$(「。level input,.degree input」)。change(...)' – Phrogz

回答

2
$(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()); 
    } 
    }); 
}) 
+0

嗨Phrogz,我看到你在那裏做了什麼,是的它應該是&&。即使有這種變化,它仍然不起作用 - 任何級別的選擇預設1_T值。 – Nestalna

+0

@Nestalna然後你必須調試你的代碼。在Chrome調試器中設置斷點。檢查變量的值並將其與您的預期進行比較。實時查看代碼並問問自己:「爲什麼電腦會做出這樣的選擇?」你的值中是否有空格,使得你的字符串不完全相同?歡迎來到Stack Overflow,歡迎來到軟件開發。你的大部分工作是學習如何像電腦一樣思考,以及如何弄清電腦在做什麼。正如你所做的那樣請求他人的幫助是個好主意,但不是唯一的出路。 – Phrogz

+1

感謝您的建議和回覆Phrogz,我已經好幾天了,所以我想我會問。故障排除非常好,我會繼續這樣做,我只是不知道JavaScript是否足夠了解如何添加度量變量。當我找到答案時我會報告回來! – Nestalna

1

必須聲明你的變量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號線沒有計算:我們定義了不同程度的供以後使用

爲什麼它與例1的工作?

javascript boolean operation is lazy checked。由於您的第一次測試level == "1"一次爲真,因此不在意是否定義了degree。但在例2中,第一次測試失敗,並且您的degree變量未定義。

+2

Downvoted,因爲你寫的代碼將無法工作,由於第2行。(另外,FYI,單詞「declare」和「example」拼寫錯誤。) – Phrogz

+0

嗨Darius,謝謝你的回覆 - 我試過,它沒有工作:(好主意的第2行! – Nestalna