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

Статус
В этой теме нельзя размещать новые ответы.

Aragorn

Постоялец
Регистрация
2 Окт 2006
Сообщения
117
Реакции
80
Есть вот такой кусок кода:
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

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

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

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

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

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

Кто можер реально помочь, просьба написать тут, очень жду :)
 
насколько я вижу то она меняется этими ф-циями

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-ах вызывали одинаковую функцию


второй способ намного лучше, так как уменьшает размеры кода
 
Исходник ты не тот бросил)

А где у тебя так цена меняется? Так как у меня 1.4 и она делает так как ты хочешь, а не так как ты написал.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху