Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.01.2018, 04:20
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Сохранение выбора страницы подгрузки
Здравствуйте.
Извиняюсь, но я в java несилен, поэтому прошу вашей помощи.

Сделал подгрузку страницы в div, всё работает, всё хорошо.
Но есть одна проблема.
Есть модуль фильтрации по товарам на сайте, есть кнопка выбора валюты в грн. и евро. То есть при выборе евро подгружается страница с ценами товаров в евро и подгружается выбор диапазона цены в евро в модуль фильтрации. С этим проблем нет, всё работает идеально, но вот когда перехожу на следующую страницу, то обновляется сайт и загружается страница которая стоит первоочередной в подгрузке (то есть грн.) и отображается вторая страница с ценами в грн., а не в евро.

Вот сайт, чтобы вы посмотрели и поняли о чем я.
Так как не знаю, как подробней объяснить.
http://etl.kl.com.ua/tehnika/

Можно ли как-то реализовать запоминание через куки?
Или по другому сделать подгрузку контента.

Пытался реализовать ajax переход по страницам, но не получается.
Совсем тупой я в java.


Собственно код вывода переключателя:
<div class="source source-1">₴</div>
<div class="source source-2">€</div>



<div class="target target-1">цены в грн.</div>
<div class="target target-2">цены в евро</div>


Сам скрипт:
var HIDDEN_CLASS_NAME = 'hidden'
var TARGET_CLASS_NAME = 'target'
var SOURCE_CLASS_NAME = 'source'

var targetIdToShow = 1

function main() {
var targets = getElements(TARGET_CLASS_NAME)
var sources = getElements(SOURCE_CLASS_NAME)
sources.forEach(function (sourceNode) {
var sourceNodeId = extractId(sourceNode, SOURCE_CLASS_NAME)
sourceNode.addEventListener('click', function () {
showTarget(targets, sourceNodeId)
})
})
showTarget(targets, targetIdToShow)
}

function getElements(type) {
return [].slice.call(document.querySelectorAll('.' + type)).sort(function (targetNode1, targetNode2) {
var target1Num = extractId(targetNode1, TARGET_CLASS_NAME)
var target2Num = extractId(targetNode2, TARGET_CLASS_NAME)
return target1Num > target2Num
})
}

function extractId(targetNode, baseClass) {
var currentClassIndex = targetNode.classList.length
while (currentClassIndex--) {
var currentClass = targetNode.classList.item(currentClassIndex)
var maybeIdNum = parseInt(currentClass.split('-')[1])
if (isNaN(maybeIdNum)) {
continue
}
var classStrinToValidate = baseClass + '-' + maybeIdNum
if (classStrinToValidate === currentClass) {
return maybeIdNum
}
}
}

function showTarget(targets, targetId) {
targets.forEach(function (targetNode, targetIndex) {
var currentTargetNodeId = extractId(targetNode, TARGET_CLASS_NAME)
if (currentTargetNodeId === targetId) {
targetNode.classList.remove(HIDDEN_CLASS_NAME)
} else {
targetNode.classList.add(HIDDEN_CLASS_NAME)
}
})
}

main()




Буду очень признателен за помощь )
Ответить с цитированием
  #2 (permalink)  
Старый 08.01.2018, 09:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Выбранная пользователем валюта должна сохраняться в куках, а сервер при запросах должен отдавать страницу в той валюте, которая у пользователя в куках, в противном случае в валюте по умолчанию.

Можно вообще отдавать цены в двух валютах, тогда выбор валюты, это отображение цен в выбранной, без надобности запроса страниц.
Ответить с цитированием
  #3 (permalink)  
Старый 08.01.2018, 16:39
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

А как реализовать сохранение в куки для каждого параметра?
Можете дать ссылку на материал или подсказать куда копать? )
Буду признателен.


Сообщение от laimas Посмотреть сообщение
Выбранная пользователем валюта должна сохраняться в куках, а сервер при запросах должен отдавать страницу в той валюте, которая у пользователя в куках, в противном случае в валюте по умолчанию.

Можно вообще отдавать цены в двух валютах, тогда выбор валюты, это отображение цен в выбранной, без надобности запроса страниц.
Ответить с цитированием
  #4 (permalink)  
Старый 08.01.2018, 16:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nik_Dev
А как реализовать сохранение в куки для каждого параметра?
Каких каждого, если требуется запомнить только признак валюты? Сервер то каким образом узнает какая из валют запрашивается - по параметру запроса ключ=значение. Значение и определяет выбранную валюту, вот его и надо записывать в куки. Это может делать и клиент, и сервер (какой язык сервер использует я не знаю, потому без ссылок). Главное, что сервер может читать куку, а значит определять выбрана ли уже была валюта или нет.
Ответить с цитированием
  #5 (permalink)  
Старый 08.01.2018, 17:23
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Прошу прощение, имел ввиду значения, а не параметра... Туплю.
Сервер на PHP работает, сам сайт на DLE.

Спасибо огромное, буду изучать данный Вами материал )


Сообщение от laimas Посмотреть сообщение
Каких каждого, если требуется запомнить только признак валюты? Сервер то каким образом узнает какая из валют запрашивается - по параметру запроса ключ=значение. Значение и определяет выбранную валюту, вот его и надо записывать в куки. Это может делать и клиент, и сервер (какой язык сервер использует я не знаю, потому без ссылок). Главное, что сервер может читать куку, а значит определять выбрана ли уже была валюта или нет.
Ответить с цитированием
  #6 (permalink)  
Старый 08.01.2018, 17:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nik_Dev
Сервер на PHP работает
Если 1, это гривна и по умолчанию, а 2, это евро, то текущая валюта с учетом кук:

$current = (int)$_COOKIE["current"] ?: 1;


Если запросом передается и выбор валюты, то установка куки, с одновременным присвоением запрошенного $current, которым и оперировать (в реальных скриптах своя переменная естественно).
Ответить с цитированием
  #7 (permalink)  
Старый 08.01.2018, 17:53
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Благодарю
Буду изучать и делать )


Сообщение от laimas Посмотреть сообщение
Если 1, это гривна и по умолчанию, а 2, это евро, то текущая валюта с учетом кук:

$current = (int)$_COOKIE["current"] ?: 1;


Если запросом передается и выбор валюты, то установка куки, с одновременным присвоением запрошенного $current, которым и оперировать (в реальных скриптах своя переменная естественно).
Ответить с цитированием
  #8 (permalink)  
Старый 08.01.2018, 20:22
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

В общем как ни пытался, ничего не получается.
DLE не работает с PHP вставками на прямую.
Как это всё организовать через js?

Сообщение от laimas Посмотреть сообщение
Если 1, это гривна и по умолчанию, а 2, это евро, то текущая валюта с учетом кук:

$current = (int)$_COOKIE["current"] ?: 1;
Ответить с цитированием
  #9 (permalink)  
Старый 09.01.2018, 01:19
Аспирант
Отправить личное сообщение для Nik_Dev Посмотреть профиль Найти все сообщения от Nik_Dev
 
Регистрация: 26.12.2017
Сообщений: 30

Всем огромное спасибо!

Вопрос был решен благодаря рони

А вот само решение (может кому-то пригодится):

<script>
window.addEventListener('DOMContentLoaded', function() {
var indx = localStorage.getItem('indx');
[].forEach.call(document.querySelectorAll('.drop li'), function(item,i) {
        item.addEventListener('click', function() {
         localStorage.setItem('indx',i);
        });
        if(i == indx) {
        jQuery(item).trigger('click')
        jQuery('.slct').text(item.textContent)
        }
    });
    });
  </script>
Ответить с цитированием
  #10 (permalink)  
Старый 09.01.2018, 02:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Nik_Dev,
учите мат часть ... и код выше будут не нужен, а вот к тому что вам советовали про куки и сервер, прислушайтесь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в зависимости от выбора настроить внешний вид страницы rfhnjirf Элементы интерфейса 1 20.05.2017 19:44
Сохранение правок кода после обновления страницы qero Firefox/Mozilla 5 21.02.2016 17:30
Сохранение выбора в select steepfox Общие вопросы Javascript 27 18.10.2015 16:10
Сохранение номера страницы в заголовке Nick1 Общие вопросы Javascript 1 18.01.2015 19:12
Сохранение данных для передачи с одной страницы в другую Andrey Freeman Общие вопросы Javascript 6 15.09.2008 22:32