С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13

Перенос переменной из одного скрипта в другой

21.03.2017, 11:50. Показов 2948. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На одной странице два скрипта.
Первый производит вычисление. Второй отправляет письмо на почту с этим результатом.
Переменная result не передается во второй скрипт. Письмо на почту приходит Цена:undefined
Что нужно сделать?

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<script>
    function Start() 
    {
            var razmer = document.getElementById('razmer').value;
        var bumagacover = document.getElementById('bumagacover').value; 
        var cvetcover = document.getElementById('cvetcover').value;
            var cvetblock = document.getElementById('cvetblock').value;
        var tirazh = document.getElementById('tirazh').value;
        var laminat = document.getElementById('laminat').value;
        var springline = document.getElementById('springline').value;
        var springcolor = document.getElementById('springcolor').value;
        var blocksize = document.getElementById('blocksize').value;
        
        var springprice = springline*razmer*springcolor * tirazh;   
        var formaprice = 300*cvetblock + 300*cvetcover;
        var zarplata = 800;
        var arenda = 250;
        var bumagablock = 1.08;
        var tirazhcover;
        var tirazhblcok;
                
        
        if (razmer == 10.6) {tirazhcover = tirazh/4; tirazhblcok = (tirazh*blocksize/8).toFixed();}
       else if (razmer == 14.8) {tirazhcover = tirazh/2; tirazhblcok = (tirazh*blocksize/4).toFixed();}
       else if (razmer == 21)   {tirazhcover = tirazh;   tirazhblcok = (tirazh*blocksize/2).toFixed();}
       else if (razmer == 29.9) {tirazhcover = tirazh*2; tirazhblcok = tirazh*blocksize;}
        if (cvetcover == 0) cvetcover=1;
        
        var laminatprice = +tirazhcover*laminat;
        var vremya = +cvetcover*(0.62 +tirazhcover/5500) +cvetblock*(0.62 +tirazhblcok/5500);
        var bumagaprice = ((+tirazhcover + cvetcover * 50) * bumagacover + (+tirazhblcok + cvetblock * 50) * bumagablock).toFixed(2);
        
        var result = (+bumagaprice +formaprice +laminatprice +springprice +vremya*zarplata +vremya*arenda).toFixed(2);
        
          
    document.getElementById('result').innerHTML = 'Цена: ' + result + ' руб.'; 
    }
</script>
<script>
    
    function sendMail ()
    {
    
    var fio = document.getElementById('fio').value;
    var phone = document.getElementById('phone').value;
    var email = document.getElementById('email').value;
    
    
    
        var sel = document.getElementById("razmer");
    var bloknotsize = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("bumagacover");
    var papercover = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("laminat");
    var lamcover = sel.options[sel.selectedIndex].text;
    
        var sel = document.getElementById("cvetcover");
    var colorcover = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("cvetblock");
    var colorblock = sel.options[sel.selectedIndex].text;
 
    var blocksize = document.getElementById('blocksize').value;
 
        var sel = document.getElementById("springline");
    var springside = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("springcolor");
    var springcolor = sel.options[sel.selectedIndex].text;
 
    var tirazh = document.getElementById('tirazh').value;
    var result;
    
    var telo = ("ФИО:"+fio+" Email:"+email+" Тел:"+phone+" Размер блокнота = "+bloknotsize+" Бумага обложки: "+papercover+" Ламинация обложки:"+lamcover+" Цвет обложки: "+colorcover+" Цвет блока:"+colorblock+" Листов в блоке:"+blocksize+" Пружина:"+springside+" Цвет пружины:"+springcolor+" Тираж:"+tirazh+" Цена:"+result);
 
    
    
    $(document).ready(function(){   
    $.ajax({
                url: "obrabotka.php",
            type: "POST",
                data: {telo:telo},
            success: function(responseText){
                    alert(responseText);
    }
    });
}); 
        
        
    }
</script>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2017, 11:50
Ответы с готовыми решениями:

Передача значений переменных из одного js-скрипта в другой
Здравствуйте! Есть проблема. Имеется, к примеру, такой HTML-файл: ... &lt;script&gt; ... var a1 = a2, b1 = b2, c1 = c2; ... ...

Перенос информации из одного поля в другой в одной форме
вопрос такой: есть выпадающее меню и поле ввода текста, как сделать так что бы при выборе значения в вып. меню это значение переносилось в...

Перенос текста из одного блока в другой
Есть textarea , div и button. Как сделать так, чтобы текст из textarea копировался в div, при нажатии на кнопку button? Можно,...

14
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.03.2017, 12:12
1. javascript != java
2.
Цитата Сообщение от leopold 2017 Посмотреть сообщение
var result;
это что?
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
21.03.2017, 12:28  [ТС]
Это мои фантазии, я не знаю как должно быть.
Но если это убрать то на почту приходит
object HTMLDivElement
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.03.2017, 12:34
как можно, что-то делать, если ты не понимаешь, что ты делаешь?
tirazh ты же как-то получил, например, так же и result получай
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
21.03.2017, 12:55  [ТС]
Тираж переменная которая берется из выпадающего меню, там все переменные берутся из выбора менюшек.
А переменная result получается из формулы в которой участвуют остальные переменные.
var result = (+bumagaprice +formaprice +laminatprice +springprice +vremya*zarplata +vremya*arenda).toFixed(2);
Я как понимаю, после окончания первого скрипта переменная result обнуляется, нужно как то ее сделать глобальной, а как это сделать я не знаю
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.03.2017, 13:46
можно отсюда достать
Цитата Сообщение от leopold 2017 Посмотреть сообщение
document.getElementById('result').innerH TML = 'Цена: ' + result + ' руб.';
можно функцию написать
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
21.03.2017, 14:09  [ТС]
нет, так тоже не работает
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
22.03.2017, 10:32
leopold 2017, Вы прямо перед объявлением переменной telo объявляете новую пустую переменную result:
JavaScript
1
2
3
var result;
    
    var telo = ("ФИО:"+fio+" Email:"+email+" Тел:"+phone+" Размер блокнота = "+bloknotsize+" Бумага обложки: "+papercover+" Ламинация обложки:"+lamcover+" Цвет обложки: "+colorcover+" Цвет блока:"+colorblock+" Листов в блоке:"+blocksize+" Пружина:"+springside+" Цвет пружины:"+springcolor+" Тираж:"+tirazh+" Цена:"+result);
Естественно в result у вас будет undefined.
Цитата Сообщение от leopold 2017 Посмотреть сообщение
переменная result получается из формулы в которой участвуют остальные переменные.
JavaScript
1
var result = (+bumagaprice +formaprice +laminatprice +springprice +vremya*zarplata +vremya*arenda).toFixed(2);
Переменная result в данном случае объявлена в контексте функции Start(). В контексте функции sendMail() она не будет доступна. Вынесите объявление этой переменной за пределы функций (в глобальный контекст), а внутри функций уберите все var перед result.
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
22.03.2017, 14:46  [ТС]
Т.е. мне можно не делать под каждую функуцию <script> </script> а обе запихать в одну и перед началом обоих объявить переменную? Так?
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
22.03.2017, 15:17
Цитата Сообщение от leopold 2017 Посмотреть сообщение
мне можно не делать под каждую функуцию <script> </script> а обе запихать в одну
Да
Цитата Сообщение от leopold 2017 Посмотреть сообщение
перед началом обоих объявить переменную?
Нет. Объявите один раз
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
24.03.2017, 13:35  [ТС]
Цитата Сообщение от Balanaar Посмотреть сообщение
Да
Нет. Объявите один раз
Так тоже не работает

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<script>
            
    function Start() 
    {
            var razmer = document.getElementById('razmer').value;
        var bumagacover = document.getElementById('bumagacover').value; 
        var cvetcover = document.getElementById('cvetcover').value;
            var cvetblock = document.getElementById('cvetblock').value;
        var tirazh = document.getElementById('tirazh').value;
        var laminat = document.getElementById('laminat').value;
        var springline = document.getElementById('springline').value;
        var springcolor = document.getElementById('springcolor').value;
        var blocksize = document.getElementById('blocksize').value;
        
        var springprice = springline*razmer*springcolor * tirazh;   
        var formaprice = 300*cvetblock + 300*cvetcover;
        var zarplata = 800;
        var arenda = 250;
        var bumagablock = 1.08;
        var tirazhcover;
        var tirazhblcok;
                
        if (razmer == 10.6) {tirazhcover = tirazh/4; tirazhblcok = (tirazh*blocksize/8).toFixed();}
       else if (razmer == 14.8) {tirazhcover = tirazh/2; tirazhblcok = (tirazh*blocksize/4).toFixed();}
       else if (razmer == 21)   {tirazhcover = tirazh;   tirazhblcok = (tirazh*blocksize/2).toFixed();}
       else if (razmer == 29.9) {tirazhcover = tirazh*2; tirazhblcok = tirazh*blocksize;}
        if (cvetcover == 0) cvetcover=1;
        
        var laminatprice = +tirazhcover*laminat;
        var vremya = +cvetcover*(0.62 +tirazhcover/5500) +cvetblock*(0.62 +tirazhblcok/5500);
        var bumagaprice = ((+tirazhcover + cvetcover * 50) * bumagacover + (+tirazhblcok + cvetblock * 50) * bumagablock).toFixed(2);
        
        var result = (+bumagaprice +formaprice +laminatprice +springprice +vremya*zarplata +vremya*arenda).toFixed(2);
        
          
    document.getElementById('result').innerHTML = 'Цена: ' + result + ' руб.'; //выводим получившееся значение в div с id="result"
    }
 
    
    function sendMail ()
    {
    
    var fio = document.getElementById('fio').value;
    var phone = document.getElementById('phone').value;
    var email = document.getElementById('email').value;
    
    
    
        var sel = document.getElementById("razmer");
    var bloknotsize = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("bumagacover");
    var papercover = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("laminat");
    var lamcover = sel.options[sel.selectedIndex].text;
    
        var sel = document.getElementById("cvetcover");
    var colorcover = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("cvetblock");
    var colorblock = sel.options[sel.selectedIndex].text;
 
    var blocksize = document.getElementById('blocksize').value;
 
        var sel = document.getElementById("springline");
    var springside = sel.options[sel.selectedIndex].text;
 
        var sel = document.getElementById("springcolor");
    var springcolor = sel.options[sel.selectedIndex].text;
 
    var tirazh = document.getElementById('tirazh').value;
    
    
    var telo = ("ФИО:"+fio+" Email:"+email+" Тел:"+phone+" Размер блокнота = "+bloknotsize+" Бумага обложки: "+papercover+" Ламинация обложки:"+lamcover+" Цвет обложки: "+colorcover+" Цвет блока:"+colorblock+" Листов в блоке:"+blocksize+" Пружина:"+springside+" Цвет пружины:"+springcolor+" Тираж:"+tirazh+" Цена:"+result);
 
    
    
    $(document).ready(function(){   
    $.ajax({
                url: "obrabotka.php",
            type: "POST",
                data: {telo:telo},
            success: function(responseText){
                    alert(responseText);
    }
    });
}); 
        
        
    }
</script>
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
24.03.2017, 14:59
Из функции вынеси
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
24.03.2017, 15:38  [ТС]
JavaScript
1
var telo = ("ФИО:"+fio+" Email:"+email+" Тел:"+phone+" Размер блокнота = "+bloknotsize+" Бумага обложки: "+papercover+" Ламинация обложки:"+lamcover+" Цвет обложки: "+colorcover+" Цвет блока:"+colorblock+" Листов в блоке:"+blocksize+" Пружина:"+springside+" Цвет пружины:"+springcolor+" Тираж:"+tirazh+" "+document.getElementById('result').innerHTML);
вот так сработало

Добавлено через 6 минут
Теперь у меня еще вопрос.
Не знаю правда здесь его задавать или в другом каком то разделе.

К этим функциям есть поля ввода сделаны через select
JavaScript
1
2
3
4
5
6
<select id="razmer"> 
        <option value="10.6" type="number" selected>A6 (105*148мм)</option> 
        <option value="14.8" type="number" >A5 (148*210мм)</option>
        <option value="21" type="number" >A4 (210*297мм)</option>
        <option value="29.9" type="number" >A3 (297*420мм)</option>
        </select>
И так далее, в конце кнопка для запуска скрипта:
JavaScript
1
2
<th width="200" <button onclick="Start();"><strong>Рассчитать!</strong></button></th>
        <th width="150"><strong><div id="result">0</div><strong></th>
Мне нужно ее убрать и что бы при загрузке страницы скрипт сразу срабатывал и выдавал результат вычислений.
А так же срабатывал при каждом изменении опций.

Добавлено через 5 минут
Блин как редактировать сообщения???

не "select" а "option"
есть еще
JavaScript
1
input value="100" type="number" min="50" step="50" id="tirazh"
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 13
27.03.2017, 10:35  [ТС]
Сделал, всем спасибо все свободны
0
27.03.2017, 13:28

Не по теме:

Спасибо, что отпустили. Не благодарите.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2017, 13:28
Помогаю со студенческими работами здесь

Перенести значение переменной из одного скрипта в другой
Здравствуйте. Прошу помощи, пока начинаю разбираться с Jquery, не смейтесь... есть скрипт, где значение переменной X будет...

Как передать переменную из одного скрипта в другой
Привет, всем, есть два скрипта один obr.js - который занимается расчетами и есть скрипт mail.js который отправлять сообщение AJAX запросом,...

Можно ли передать объект из одного скрипта в другой
Вопрос такой хочу отдельным скриптом оформить отправку почты можно ли из одного скрипта передавать в другой параметры? к примеру есть...

Выбор из одного списка и перенос в другой...
Суть моей проблемы в следующем - не могу передать id в работе с Jquery См вложение. В верхней таблицы у каждого матча есть свой...

Перенос элементов из одного div в другой div
Добрый вечер. На странице есть такая комбинация: &lt;p&gt; &lt;input id=&quot;input5&quot; class=&quot;checkbox&quot; type=&quot;checkbox&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru