Причем тут js? У вас выбор торгового предложения должен на сервере уже происходить.
Компонент какой используете? Судя по коду шаблону catalog.element (catalog комплексный)
Так вот в $arResult есть ключ $arResult["SELECTED_OFFER"] (или как то так). Он обычно равен 0.
И также есть список предложений:
$arResult['OFFERS'] = array(
0=>array(...),
1=>array(...),
2=>array(...),
и т.д.
);
Для решения задачи вам необходимо учесть 2 проблемы:
1. Кеширование компонента.
2. Выбор активного торгового предложения.
При вызове компонента catalog вы в настройки компонента добавьте переменную $_GET["pid"] - т.о образом для каждого торгового предложения у вас будет свой кеш.
например:
<?$APPLICATION->IncludeComponent(
"bitrix:catalog",
"",
Array(
"TEMPLATE_THEME" => "blue",
"IBLOCK_TYPE" => "catalog",
"IBLOCK_ID" => "2",
"SELECTED_OFFER_ID"=>(isset($_GET["pid"]) && intval($_GET["pid"]) > 0 ?$_GET["pid"]:0),
.............
И затем в шаблоне в файле element.php:
<?$APPLICATION->IncludeComponent(
"bitrix:catalog.element",
"",
Array(
"SELECTED_OFFER_ID" => $arParams["SELECTED_OFFER_ID"],
в шаблоне bitrix:catalog.element создаете файл result_modifier, там пробегаетесь по всем $arResult['OFFERS'] - и если ID совпадает - делаете ключ выбранным торговым предложением:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
foreach($arResult['OFFERS'] as $offer_key=>$arOffer){
if(intval($arParams["SELECTED_OFFER_ID"]) == intval($arOffer['ID'])){
$arResult["SELECTED_OFFER"] = $offer_key;
break;
}
}
в шаблоне:
<ul class="offer-list">
<? foreach ($arResult['OFFERS'] as $iKey => $arOffer): ?>
<li data-id="<?= $arOffer['ID']; ?>"<?= ($iKey == $arResult["SELECTED_OFFER"]) ? ' class="active"' : ''; ?>>
<? if ($arOffer['PRICES'][$sPriceCode]['CAN_BUY'] == 'Y' && $arOffer['CATALOG_AVAILABLE'] == 'Y'): ?>
<span><?= $arOffer['PRICES'][$sPriceCode]['PRINT_DISCOUNT_VALUE']; ?></span>
<? endif; ?>
<?= $arOffer['NAME']; ?>
</li>
<? endforeach; ?>
</ul>