2016-11-22 5 views
0

jQueryで、同じクラスの各divについて、選択ボックス内で選択された値の合計が0より大きい場合、アラートを表示する簡単な関数を記述したいと思います。入れ子div内のselectオプションの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

try .find( 'option:selected').val()の代わりにattr( 'value') – 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(); 

手段は$で負の変数を追加...私は愚かだということだ(この).val()。代数和を意味するものではありません。

非常に醜いソリューション:

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

またはより良い:

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

は、今では動作します!

関連する問題