2011-07-29 4 views
0

私はなぜ私の問題を抱えているのか知っていると思うが、それを修正するにはjqueryについて十分に分かっていない。jquery increment var name(varsが上書きされていると思う)

私はデータベースに接続して製品のリストを表示しています。同じitemidを持つ複数のアイテムがある場合は、javascript関数を呼び出します。それは同じ関数ですが、私はそれをユニークにするために私は正しい価格などを得ることができるいくつかのビットを追加しましたが、この1つのjavascript変数/配列は常に同じで、私はそれが以前に宣言varを上書きしていると思います。

私のページへのリンクがhttp://www.operationbraveheart.org.uk/jcart/testshop.php

である私は、この行をどうするのですか、それはoverwittenなっVARSの多くをどうするかもしれないと思いますか?

var price = item_prices_by_size[size].Price, 

は、私は私がVARNAMEので代わりののvarフォームをインクリメントした場合、私はするvar Form1]を得るという理論を持っていた。ここ

は、私はちょうど持っていた

<script type="text/javascript"> 
    var item_prices_by_size = <?php 
    $blah=1; 
    echo '{ '; 
    foreach($subitem AS $subsubitem) { 
     if($subsubitem['size'] != 'X-Large') { 
      echo '"'.$subsubitem['size'].'": { "Price": "'.$subsubitem['price'].'", "ItemId": "'.$subsubitem['itemid'].'-'.$blah.'" },'; 
     } 
     else { 
      echo '"'.$subsubitem['size'].'": { "Price": "'.$subsubitem['price'].'", "ItemId": "'.$subsubitem['itemid'].'-'.$blah.'" }'; 
     } 
     $blah++; 
    } 
    echo'};'; 
    ?> 

    $(function() { 

     $('#foo<?php echo $subitem[0]["prodid"] ?>').change(function() { 

     var form = $(this).parents('form'); 

     // Size is whatever the value the user has selected 
     var size = $(this).val(); 

     // Determine the correct price and item ID based on the selected size 
     var price = item_prices_by_size[size].Price, 
     itemId = item_prices_by_size[size].ItemId; 

     form.find('#price<?php echo $subitem[0]['prodid'] ?>').text(price); 

     form.find('[name=my-item-price]').val(price); 

     // Update the item ID 
     form.find('[name=my-item-id]').val(itemId); 


     }); 
    }); 
</script> 
+1

接続後にこのJSを出力しようとしていますか、クライアント側でPHP変数を使用できると思われますか?中間の人(ajax)なしでサーバーサイド変数を使用できると思えば、おそらく問題の出発点です。 – scrappedcola

答えて

0

私のjqueryの関数でありますphpを使ってvar名の一部を期待通りに変更するには、var値が表示されている次の形式に置き換えられていました。

どのフォームにどのvarが属しているかを知る方法がありませんでした。

作業コードが完成しました。

<script type="text/javascript"> 
        var item_prices_by_size<?php echo $subitem[0]["prodid"] ?> = <?php 
         $blah=1; 
         echo '{ '; 
         foreach($subitem AS $subsubitem) { 
          if($subsubitem['size'] != 'X-Large') { 
           echo '"'.$subsubitem['size'].'": { "Price": "'.$subsubitem['price'].'", "ItemId": "'.$subsubitem['itemid'].'-'.$blah.'" },'; 
          } 
          else { 
           echo '"'.$subsubitem['size'].'": { "Price": "'.$subsubitem['price'].'", "ItemId": "'.$subsubitem['itemid'].'-'.$blah.'" }'; 
          } 
          $blah++; 
         } 
         echo'};'; 
         ?> 

     $(function() { 


      $('#foo<?php echo $subitem[0]["prodid"] ?>').change(function() { 

       var form = $(this).parents('form'); 

       // Size is whatever the value the user has selected 
       var size = $(this).val(); 

       // Determine the correct price and item ID based on the selected size 
       var price<?php echo $subitem[0]["prodid"] ?> = item_prices_by_size<?php echo $subitem[0]["prodid"] ?>[size].Price, 
        itemId = item_prices_by_size<?php echo $subitem[0]["prodid"] ?>[size].ItemId; 

       form.find('#price<?php echo $subitem[0]['prodid'] ?>').text(price<?php echo $subitem[0]["prodid"] ?>); 

       form.find('[name=my-item-price]').val(price<?php echo $subitem[0]["prodid"] ?>); 

       // Update the item ID 
       form.find('[name=my-item-id]').val(itemId); 


      }); 
     }); 
      </script> 
関連する問題