Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2019, 10:41
Новичок на форуме
Отправить личное сообщение для ligt222 Посмотреть профиль Найти все сообщения от ligt222
 
Регистрация: 29.01.2019
Сообщений: 3

Из трех калькулятор работает только последний, помогите разобраться
Есть 3 калькулятора на одной странице, данные для калькулятора подтягиваю из БД а какие то вводятся. Нужно что бы работали калькуляторы все, а не только последний, по отдельности каждый работает, на разных страницах тоже работает, если коментить калькуляторы с последнего, то предыдущий будет работать (Коменчу 3 работает 2, коменчу 2 и 3 работает 1) id для каждого калькулятора не повторяются. Вот файл. P.S Они обязательно должны быть на одной странице. Может можно их как то изолировать друг от друга?
Вложения:
Тип файла: txt код.txt (24.2 Кб, 2 просмотров)

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

А без РНР кода взять то что на странице нельзя? Ну никто же не будет запускать РНР, чтобы заполнить страницу данными. И вот это const plans = JSON.parse('<?php echo json_encode(get_plans(), true); ?>'); вообще не нужно, json_encode() и поместит строку для plans, которая и будет являться объектом в JS.
Ответить с цитированием
  #3 (permalink)  
Старый 29.01.2019, 12:27
Новичок на форуме
Отправить личное сообщение для ligt222 Посмотреть профиль Найти все сообщения от ligt222
 
Регистрация: 29.01.2019
Сообщений: 3

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

Сообщение от ligt222
Она как бы в массив строку преобразовывает
Это если бы асинхронным запросом клиент получил строку, вот тогда нужно было бы из нее получить объект. А вашем случае json_encode() вернет строку (вставит ее в js-код на странице), которая как разу будет литералом объекта или массива, в зависимости от того какой массив кодирует json_encode.
Ответить с цитированием
  #5 (permalink)  
Старый 29.01.2019, 13:54
Новичок на форуме
Отправить личное сообщение для ligt222 Посмотреть профиль Найти все сообщения от ligt222
 
Регистрация: 29.01.2019
Сообщений: 3

А если попробую сделать так что бы передавался id от блоков в которых находятся калькуляторы, и вынесу script общий для всех, а внутри блоков все будет по классам
$('.js-amount').on('change keyup', function () {
let block_id = $(this).parents('.blockcalc').attr('id');

calc($(this).val(), block_id);

Ну вот так примерно? Получится? Мне просто JSON.parse Нельзя убирать
Ответить с цитированием
  #6 (permalink)  
Старый 29.01.2019, 14:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ligt222
Мне просто JSON.parse Нельзя убирать
Это почему? Понимаете, то что там написано, пустое занятие не имеющее никакой пользы. Вот массив в РНР:

$a = [
    'a' => 1,
    'b' => 2
];


json_encode из этого массива сформирует строку - "{"a":1,"b":2}". Если ее вставить при выводе в тег
<script>
var j = <?=json_encode($a);?>
</script>, то результатом на клиенте будет вот такое:

<script>
var j = {"a":1,"b":2}; //уже готовый объект, его литеральная запись 
</script>


Вы же берете строку от json_encode обрамляете ее в кавычки, затем уже на клиенте она будет преобразована в объект. Вопрос - нахрена нужна эта лишняя арифметика?

Последний раз редактировалось laimas, 29.01.2019 в 14:24.
Ответить с цитированием
  #7 (permalink)  
Старый 29.01.2019, 14:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery для placeholder работает только для первого input в ie Nailya jQuery 1 13.05.2014 09:57
Только один из трех элементов может быть активен Volchen0ck Events/DOM/Window 5 27.01.2013 17:05
Скрипт работает только в Mazilla Pashok Ваши сайты и скрипты 3 26.01.2013 23:09
Не работает калькулятор под wordpress в FF Smoked Javascript под браузер 1 02.10.2012 18:19
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50