2016-11-22 36 views
0

在jQuery中,我想編寫一個簡單的函數來顯示警告,如果在選擇框內選擇的值之和的差值> 0,對於同一類的每個div。嵌套div內選擇選項的jQuery計數值

這是我的html代碼:

$(".Y").each(function(index) { 
 
    \t var positive = $(this).children('.Z').val(); 
 
    \t var negative = 0; 
 
    
 
    \t $(this).children('.T').each(function(index) { 
 
    \t \t negative = negative + $(this).val(); 
 
    \t }); 
 
    \t 
 
    \t var difference = positive - negative; 
 
    
 
    \t if (difference > 0) { 
 
    \t \t alert("Show something!"); 
 
    \t } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="X"> 
 
\t  <div class="Y"> 
 
\t \t  <select class="Z"> 
 
\t \t \t  <option value="0">0</option> 
 
\t \t \t  <option value="1">1</option> 
 
\t \t  </select> 
 
\t \t  <select class="T"> 
 
\t \t \t  <option value="0">0</option> 
 
\t \t \t  <option value="1">1</option> 
 
\t \t  </select> 
 
\t \t  <select class="T"> 
 
\t \t \t  <option value="0">0</option> 
 
\t \t \t  <option value="1">1</option> 
 
\t \t  </select> 
 
     \t <div> 
 

 
\t  <div class="Y"> 
 
\t \t  <select class="Z"> 
 
\t \t \t  <option value="0">0</option> 
 
\t \t \t  <option value="1">1</option> 
 
\t  \t </select> 
 
\t \t  <select class="T"> 
 
\t \t  \t <option value="0">0</option> 
 
\t \t  \t <option value="1">1</option> 
 
\t \t  </select> 
 
\t \t  <select class="T"> 
 
\t \t  \t <option value="0">0</option> 
 
\t \t \t  <option value="1">1</option> 
 
\t \t </select> 
 
     <div> 
 
    <div>

我的代碼無法正常工作。我錯在哪裏?一些提示?

+0

您對我們有錯誤信息嗎? – manuzi1

+0

嘗試.find('option:selected')。attr('value')而不是.val() – twicejr

+1

@twicejr:沒有理由這麼做。這不是'val'壞了。 –

回答

0
var difference = positive - negative; 

if (differenze > 0) { 
    alert("Show something!"); 
} 

你拼寫它differenze代替差異的。

0

$(".Z, .T").on("change", function(index) { 
 
     var positive = $(this).parent().children('.Z').val(); 
 
     var negative = 0; 
 

 
     $(this).parent().children('.T').each(function(index) { 
 
      negative = negative + $(this).val(); 
 
     }); 
 

 
     var difference = positive - negative; 
 

 
     if (difference > 0) { 
 
      alert("Show something!"); 
 
     } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="X"> 
 
    <div class="Y"> 
 
     <select class="Z"> 
 
      <option value="0">0</option> 
 
      <option value="1">1</option> 
 
     </select> 
 
     <select class="T"> 
 
      <option value="0">0</option> 
 
      <option value="1">1</option> 
 
     </select> 
 
     <select class="T"> 
 
      <option value="0">0</option> 
 
      <option value="1">1</option> 
 
     </select> 
 
    <div> 
 

 
    <div class="Y"> 
 
     <select class="Z"> 
 
      <option >0</option> 
 
      <option >1</option> 
 
     </select> 
 
     <select class="T"> 
 
      <option >0</option> 
 
      <option >1</option> 
 
     </select> 
 
     <select class="T"> 
 
      <option >0</option> 
 
      <option >1</option> 
 
     </select> 
 
    <div> 
 
<div>

0

謝謝大家的幫助!主要的問題是,我是一個愚蠢的...

negative = negative + $(this).val(); 

意味着追加負變量$(this).val()。不代表做一個代數總和。

非常醜陋的解決方案:

negative = negative - -$(this).val(); 

或者更好:

negative = negative + parseInt($(this).val()); 

現在,它的作品!