JavaScript преждевременно останавливается

заранее спасибо за любую помощь вы можете дать.

Мне поручили разобраться с сайтом компании. Я прошел через большую часть этого, но застрял на куске JavaScript.

На сайте есть анкета с ответами в трех категориях. По счету строю треугольник. Я написал функцию, которая вернет нужные мне вычисления. В качестве теста этой функции я могу записать вычисляемые переменные прямо во всплывающее окно.

Я создал еще одну функцию, чтобы затем нарисовать треугольник, используя CANVAS() во всплывающем окне. В качестве теста, чтобы увидеть, работает ли новая функция, я добавил код, чтобы попытаться создать всплывающее окно с результатами. Это доходит до создания всплывающего окна, но не записывает в него, как будто код останавливается после создания всплывающего окна. Может ли кто-нибудь сказать мне, что я сделал неправильно?

С Уважением Нарисовался

Код:

    <script type = "text/javascript">

            function myFunction() 
            {                   
                function calcD() 
                {
                var D1 = parseInt(document.forms.form1.elements.RadioGroup1.value);
                var D2 = parseInt(document.forms.form1.elements.RadioGroup4.value);
                var D3 = parseInt(document.forms.form1.elements.RadioGroup7.value);
                var D4 = parseInt(document.forms.form1.elements.RadioGroup10.value);
                var Ds  = D1 + D2 + D3 + D4;
                return Ds;
                }

                function calcI() 
                {
                var I1 = parseInt(document.forms.form1.elements.RadioGroup2.value);
                var I2 = parseInt(document.forms.form1.elements.RadioGroup5.value);
                var I3 = parseInt(document.forms.form1.elements.RadioGroup8.value);
                var I4 = parseInt(document.forms.form1.elements.RadioGroup11.value);
                var Is  = I1 + I2 + I3 + I4;
                return Is;
                }

                function calcB() 
                {
                var B1 = parseInt(document.forms.form1.elements.RadioGroup3.value);
                var B2 = parseInt(document.forms.form1.elements.RadioGroup6.value);
                var B3 = parseInt(document.forms.form1.elements.RadioGroup9.value);
                var B4 = parseInt(document.forms.form1.elements.RadioGroup12.value);
                var Bs  = B1 + B2 + B3 + B4;
                return Bs;
                }

                var X = 396.4;
                var Y = 250;
                var coS30 = 0.866025403784439;
                var siN30m = -0.5;
                var siN30p = 0.5;
                var Dx = X;
                var Dy = calcD() + Y;
                var Bx = X - (calcB()*coS30);
                var By = Y + (calcB()*siN30m);
                var Ix = X + (calcI()*coS30);
                var Iy = Y + (calcI()*siN30p);
                var Xs = (Dx + Bx + Ix)/3;
                var Ys = (Dy + By + Iy)/3;
            /*
                var myWindow1 = window.open("","MsgWindow","resizable,height=700,width=793");

                myWindow1.document.write('var X = ' + X);
                myWindow1.document.write('; var Y = ' + Y);
                myWindow1.document.write('; var coS30 = ' + coS30);
                myWindow1.document.write('; var siN30m = ' + siN30m);
                myWindow1.document.write('; var siN30p = ' + siN30p);
                myWindow1.document.write('; var Dx = ' + Dx);
                myWindow1.document.write('; var Dy = ' + Dy);
                myWindow1.document.write('; var Bx = ' + Bx);
                myWindow1.document.write('; var By = ' + By);
                myWindow1.document.write('; var Ix = ' + Ix);
                myWindow1.document.write('; var Iy = ' + Iy);
                myWindow1.document.write('; var Xs = ' + Xs);
                myWindow1.document.write('; var Ys = ' + Ys);
                myWindow1.document.close();
            */
        }

    </script>

    <script type = "text/javascript">

                function draw() {

                    var myWindow1 = window.open("","MsgWindow","resizable,height=700,width=793");

                    myWindow1.document.write('var X = ' + X);
                    myWindow1.document.write('; var Y = ' + Y);
                    myWindow1.document.write('; var coS30 = ' + coS30);
                    myWindow1.document.write('; var siN30m = ' + siN30m);
                    myWindow1.document.write('; var siN30p = ' + siN30p);
                    myWindow1.document.write('; var Dx = ' + Dx);
                    myWindow1.document.write('; var Dy = ' + Dy);
                    myWindow1.document.write('; var Bx = ' + Bx);
                    myWindow1.document.write('; var By = ' + By);
                    myWindow1.document.write('; var Ix = ' + Ix);
                    myWindow1.document.write('; var Iy = ' + Iy);
                    myWindow1.document.write('; var Xs = ' + Xs);
                    myWindow1.document.write('; var Ys = ' + Ys);
                    myWindow1.document.close();


            /*  
                var ctx = myWindow1.document.getElementById('canvas').getContext('2d');
                var img = new Image();

                img.onload = function() {
                ctx.drawImage(img, 0, 0);
                ctx.beginPath();
                ctx.moveTo(Dx, Dy);
                ctx.lineTo(Bx, By);
                ctx.lineTo(Ix, Iy);
                ctx.fill();
                ctx.stroke();
                };
                img.src = "img/triangle.png";
            */
            };

    </script>

Значения переменных, если они вам нужны:

var X = 396.4; 

var Y = 250;
var coS30 = 0.866025403784439;
var siN30m = -0.5;
var siN30p = 0.5;
var Dx = 396.4;
var Dy = 250;
var Bx = 396.4;
var By = 250;
var Ix = 396.4;
var Iy = 250;
var Xs = 396.3999999999999;
var Ys = 250;

Когда вы записываете этот динамический контент в новое окно (т.е. vars), не должны ли вы написать заголовок, затем тег script 1st и записать его туда? Я думаю, что вы просто записываете переменные в новый DOM, который не сможет их использовать, поскольку они не находятся внутри тегов скрипта.

mkane 13.02.2019 17:36

Проблема может заключаться в вашем холсте. Вы пытаетесь нарисовать треугольник от [396,4, 250] до [396,4,250] до [396,4,250]. Это всегда одна и та же точка

enxaneta 13.02.2019 18:02

@mkane меня смущает то, что я могу создать всплывающее окно с содержимым из первой функции, но во второй оно только создает всплывающее окно, а затем останавливается. Если я попытаюсь сделать все из одной функции, все выйдет из строя

Drew 13.02.2019 20:57

@enxaneta на данный момент я не использовал правильные значения, так как пытаюсь устранить неполадки, почему функция рисования треугольника даже не пишет во всплывающем окне.

Drew 13.02.2019 20:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
47
0

Другие вопросы по теме