Из трех калькулятор работает только последний, помогите разобраться
Вложений: 1
Есть 3 калькулятора на одной странице, данные для калькулятора подтягиваю из БД а какие то вводятся. Нужно что бы работали калькуляторы все, а не только последний, по отдельности каждый работает, на разных страницах тоже работает, если коментить калькуляторы с последнего, то предыдущий будет работать (Коменчу 3 работает 2, коменчу 2 и 3 работает 1) id для каждого калькулятора не повторяются. Вот файл. P.S Они обязательно должны быть на одной странице. Может можно их как то изолировать друг от друга?
|
А без РНР кода взять то что на странице нельзя? Ну никто же не будет запускать РНР, чтобы заполнить страницу данными. И вот это const plans = JSON.parse('<?php echo json_encode(get_plans(), true); ?>'); вообще не нужно, json_encode() и поместит строку для plans, которая и будет являться объектом в JS.
|
Она как бы в массив строку преобразовывает
|
Цитата:
|
А если попробую сделать так что бы передавался id от блоков в которых находятся калькуляторы, и вынесу script общий для всех, а внутри блоков все будет по классам
$('.js-amount').on('change keyup', function () { let block_id = $(this).parents('.blockcalc').attr('id'); calc($(this).val(), block_id); Ну вот так примерно? Получится? Мне просто 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 обрамляете ее в кавычки, затем уже на клиенте она будет преобразована в объект. Вопрос - нахрена нужна эта лишняя арифметика? |
В общем пустое как на сервере так и на клиенте не к чему. Вы лучше либо покажите результирующий html код и js, либо ссылку на страницу, а ковыряться в смеси кода, большую часть которого выполнить нельзя, мало кто станет.
|
Часовой пояс GMT +3, время: 20:56. |