Взаимосвязанные списки

Тема в разделе "Другие языки", создана пользователем Aragorn, 6 июл 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Aragorn

    Aragorn Постоялец

    Регистр.:
    2 окт 2006
    Сообщения:
    117
    Симпатии:
    75
    Есть вот такой кусок кода:
    PHP:
    <!-- Цена /-->
      <
    p>
      {if 
    $product->variants[0]->discount_price>0}
      <
    span class="price"><span id=variant_price>{$product->variants[0]->discount_price*$currency->rate_from/$currency->rate_to|string_format:"%.2f"}</span>&nbsp;{$currency->sign|escape}</span>
      {/if}
      </
    p>
      <
    p>
      {if 
    $product->variants2[0]->discount_price>0}
      <
    span class="price2"><span id=variant_price2>{$product->variants2[0]->discount_price*$currency->rate_from/$currency->rate_to|string_format:"%.2f"}</span>&nbsp;{$currency->sign|escape}</span>
      {/if}
      </
    p>
      <!-- 
    Цена #End /-->

      
    <form action=cart method=get>
      <
    p>
      {if (
    $product->variants|@count 1) OR ($product->variants2|@count 1)}
      <!-- 
    Варианты товара /-->
      <
    select name=variant_id onchange="display_variant(this.value);return false;">
      {foreach 
    from=$product->variants item=variant}
      <
    option value='{$variant->variant_id|escape}'>{$variant->name|escape}<strong></strong><br>
      {/foreach}
      </
    select>
      <
    select name=variant_id2 onchange="display_variant2(this.value);return false;">
      {foreach 
    from=$product->variants2 item=variant2}
      <
    option value='{$variant2->variant_id|escape}'>{$variant2->name|escape}<strong></strong><br>
      {/foreach}
      </
    select>
      <
    input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
      <
    script>
      var 
    variants_prices = new Array;
      var 
    variants_prices2 = new Array;
      {foreach 
    from=$product->variants item=variant}
      
    variants_prices[{$variant->variant_id|escape}] = '{$variant->discount_price*$currency->rate_from/$currency->rate_to|string_format:"%.2f"}';
      {/foreach}
      {foreach 
    from=$product->variants2 item=variant2}
      
    variants_prices2[{$variant2->variant_id|escape}] = '{$variant2->discount_price*$currency->rate_from/$currency->rate_to|string_format:"%.2f"}';
      {/foreach}
      {
    literal}
      function 
    display_variant(variant)
      {
          
    document.getElementById('variant_price').innerHTML variants_prices[variant];
      }
      function 
    display_variant2(variant2)
      {
          
    document.getElementById('variant_price2').innerHTML variants_prices2[variant2];
      }
      {/
    literal}
      
    </script>

      {elseif ($product->variants|@count == 1) OR ($product->variants2|@count == 1)}
      <input type=hidden name=variant_id value='{$product->variants[0]->variant_id}'>
      <input type=hidden name=variant_id2 value='{$product->variants2[0]->variant_id}'>
      <input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
      {/if}
      <!-- Варианты товара #END /-->

      </p>
      </form>
    Результатом которого являеться вот такой вывод:

    1.jpg

    Работает так:

    При выборе из первого выпадающего списка (где по дефолту "Зеленый") меняется цена которая выделена ЖИРНЫМ и КРУПНЫМ;

    При выборе из второго выпадающего списка (где по дефолту "Большой") меняется цена которая мельче;

    Необходимо сделать следующим образом:

    При выборе одного из вариантов, либо первого либо второго - меняться должна только ЖИРНАЯ И КРУПНАЯ цена.

    Кто можер реально помочь, просьба написать тут, очень жду :)
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
  3. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    насколько я вижу то она меняется этими ф-циями

    PHP:
      function display_variant(variant)
      {
          
    document.getElementById('variant_price').innerHTML variants_prices[variant];
      }
      function 
    display_variant2(variant2)
      {
          
    document.getElementById('variant_price2').innerHTML variants_prices2[variant2];
      }
    а вызываются они вот
    PHP:
     <select name=variant_id onchange="display_variant(this.value);return false;">

    <
    select name=variant_id2 onchange="display_variant2(this.value);return false;">
    следовательно решение одно из двух
    1) либо в функциях display_variant и display_variant2 изменить сделать выбор по одному и тому-же айдишнику
    document.getElementById('variant_price') имя айдишника это "variant_price"

    2) сделать чтоб событие onchange в select-ах вызывали одинаковую функцию


    второй способ намного лучше, так как уменьшает размеры кода
     
  4. katrukhin

    katrukhin

    Регистр.:
    6 июн 2010
    Сообщения:
    168
    Симпатии:
    22
    Исходник ты не тот бросил)

    А где у тебя так цена меняется? Так как у меня 1.4 и она делает так как ты хочешь, а не так как ты написал.
     
Статус темы:
Закрыта.