<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS+HTA:форма в цикле JS=?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7690</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7690&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS+HTA:форма в цикле JS=?».]]></description>
		<lastBuildDate>Wed, 14 Nov 2012 14:27:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65636#p65636</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>ЯваСкрипт как всегда порадовал&quot; своей неразумностью</p></blockquote></div><p>На самом деле все разумно, и это не проблема разумности/неразумности языка: просто Вы смотрите со стороны требуемого результата, а не со стороны источника данных. На самом же деле на странице два отдельных элемента, две радиокнопки, каждая со своими значением и состоянием (checked). Одно имя задействовано для того, чтобы передать только значение выбранной кнопки. В DOM нет механизма получения значения выбранной элемента из группы одноименных элементов. Но это, еще раз, не проблема языка.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Wed, 14 Nov 2012 14:27:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65636#p65636</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65622#p65622</link>
			<description><![CDATA[<p>Спасибо за консультацию с примерами, я ни разу еще радиокнопки не использовал - просто не требовалось в жизни, <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.<br />ЯваСкрипт как всегда порадовал&quot; своей неразумностью в этом случае - для присвоения значения необходимо прибегнуть к циклу, хотя все просто - имя одно, мышь указала выбор, можно было бы уже не мучиться и изъять выбранное значение... т.е. можно было бы обойтись простой записью - vibor = constants.value или vibor = checked.constants.value . Ну как всегда.. все усложнено, <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />...</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Wed, 14 Nov 2012 09:08:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65622#p65622</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65621#p65621</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>не работают радиокнопки</p></blockquote></div><div class="quotebox"><cite>badik пишет:</cite><blockquote><p>в радиокнопках&nbsp; отсутствует атрибут name</p></blockquote></div><p>А также... Атрибут id используется для однозначной идентификации элемента, поэтому хранит <em>только уникальное</em> значение. </p><p>Вам стоит переписать пример, например:<br /></p><div class="codebox"><pre><code>&lt;INPUT type=&quot;radio&quot; name=&quot;constants&quot; value=&quot;1.478&quot; checked=&quot;checked&quot;&gt; Нцтв=1,478 м&lt;BR&gt;
&lt;INPUT type=&quot;radio&quot; name=&quot;constants&quot; value=&quot;1.18&quot;&gt; Нцтв=1,18 м&lt;BR&gt;</code></pre></div><div class="codebox"><pre><code>    var constants = document.getElementsByName(&#039;constants&#039;);
    var vibor;
    for (var i = 0; i &lt; constants.length; i++) {
        if ( constants[i].checked ) {
            vibor = constants[i].value;
            break;
        }
    }</code></pre></div><div class="quotebox"><cite>stir пишет:</cite><blockquote><p>вписать вас в соавторы проги</p></blockquote></div><p>Да ладно <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Здесь еще много места для исправлений, потому что это еще черновик в первом приближении.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Wed, 14 Nov 2012 08:32:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65621#p65621</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65619#p65619</link>
			<description><![CDATA[<p>в радиокнопках&nbsp; отсутствует атрибут name</p><div class="codebox"><pre><code>&lt;INPUT type=&quot;radio&quot; name=&quot;my&quot;  id=&quot;constant&quot; value=&quot;1.478&quot; checked&gt; Нцтв=1,478 м&lt;BR&gt;
&lt;INPUT type=&quot;radio&quot; name=&quot;my&quot;  id=&quot;constant&quot; value=&quot;1.18&quot;&gt; Нцтв=1,18 м&lt;BR&gt;</code></pre></div><p>доступ<br /></p><div class="codebox"><pre><code>var group=getElementsByAttribute(document,&quot;input&quot;,&quot;name&quot;,&quot;my&quot;)
var type=&quot;0&quot;
for (var j in group)
{
if (group[j].checked)
{
type=group[j].value
break
}
}

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == &quot;*&quot; &amp;&amp; oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != &quot;undefined&quot;)? new RegExp(&quot;(^|\\s)&quot; + strAttributeValue + &quot;(\\s|$)&quot;) : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i&lt;arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute &amp;&amp; oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == &quot;string&quot; &amp;&amp; oAttribute.length &gt; 0){
			if(typeof strAttributeValue == &quot;undefined&quot; || (oAttributeValue &amp;&amp; oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (badik)]]></author>
			<pubDate>Wed, 14 Nov 2012 07:07:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65619#p65619</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65616#p65616</link>
			<description><![CDATA[<p>вот получил промежуточный результат проги, однако есть косяк - не работают радиокнопки, пока не понял почему...<br />расширение файла hta</p><p>Использовал для сборки этого hta кода прогу:<br />SciTE<br />Версия 2.22 .87Ru<br />&nbsp; &nbsp; Nov&nbsp; 1 2010 09:47:26<br />http://scite.net.ru<br />На базе SciTE 2.22 Автор: Neil Hodgson.<br />December 1998-October 2010.<br />http://www.scintilla.org<br />Lua scripting language by TeCGraf, PUC-Rio<br />&nbsp; &nbsp; http://www.lua.org<br />&nbsp; &nbsp; Сборка Ru-Board</p><br /><div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;TITLE&gt;Программа расчета центра тяжести вагона&lt;/TITLE&gt;
&lt;HTA:APPLICATION ID=&quot;PKOHTA&quot;   APPLICATIONNAME=&quot;pko1HTA&quot;   BORDER=””  CAPTION=&quot;yes&quot;  ICON=&quot;pko1.ico&quot;
SHOWINTASKBAR=&quot;no&quot;  SINGLEINSTANCE=&quot;yes&quot;  SYSMENU=&quot;yes&quot;  WINDOWSTATE=&quot;normal&quot; &gt;
&lt;/head&gt;
&lt;BODY BGCOLOR=&quot;ButtonFace&quot; SCROLL=&quot;auto&quot;&gt;
 
&lt;form id=&quot;calc&quot;&gt;
&lt;input type=&quot;button&quot; id=&quot;moreButton&quot; value=&quot;Добавить строку&quot; /&gt;
&lt;input type=&quot;button&quot; id=&quot;clearButton&quot; value=&quot;Очистить ВСЁ&quot; /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;input value=&quot;Колонка масс, кг&quot; type=&quot;text&quot; readonly=&quot;readonly&quot; /&gt;&lt;input value=&quot;Колонка высот, м&quot; type=&quot;text&quot; readonly=&quot;readonly&quot; &gt;&lt;/div&gt;
&lt;br&gt;
&lt;div id=&quot;calc-frame&quot;&gt;&lt;/div&gt;
Константы:&lt;br&gt;&lt;br&gt;
Масса вагона = 35000 кг&lt;br&gt;
Н=1,286 м&lt;br&gt;&lt;br&gt;
Выберете Нцтв:&lt;br&gt;
&lt;INPUT type=&quot;radio&quot; id=&quot;constant&quot; value=&quot;1.478&quot; checked=&quot;checked&quot;&gt; Нцтв=1,478 м&lt;BR&gt;
&lt;INPUT type=&quot;radio&quot; id=&quot;constant&quot; value=&quot;1.18&quot;&gt; Нцтв=1,18 м&lt;BR&gt;
&lt;br&gt;
&lt;input type=&quot;button&quot; id=&quot;calcButton&quot; value=&quot;Расчитать!&quot; /&gt;
&lt;div&gt;Результат расчета: &lt;input type=&quot;text&quot; id=&quot;calc-result&quot; readonly=&quot;readonly&quot; /&gt;&lt;/div&gt;
&lt;/form&gt;


&lt;script type=&quot;text/javascript&quot;&gt;
 
// Основная функция вычисляет нечто и возвращает его.
//
// Входные данные:
// masses    массив масс тел
// heights    массив &quot;размеров&quot; тел
//
// Выходные данные:
// результат вычисления
function calculate(masses, heights, vibor)
{
    var m = &#039;Masses: &#039; + masses.length + &#039;: &#039; + masses;
    var h = &#039;Heights: &#039; + heights.length + &#039;: &#039; + heights;
 
    alert(m + &#039;\n&#039; + h);
    var mmax = masses.length ;
    var hmax = heights.length ;
    var qm = 35000;
    var hq = 1.286 ;//
    var hz = vibor ;//
        alert(&#039;hz=vibor= &#039;+ hz);
    var hh = [] ;//massiv высот центров тяжести каждого груза
    for (var j = 0; j &lt; hmax; j++) 
    {hh[j]=(heights[j]/2+hq); }
    alert(&#039;Расчитали высоты центров тяжести каждого груза, &#039;+&#039; hh: &#039; + hh);
    
    var h_all=s_all=q_all= 0 ;
    for (var k = 0; k &lt; hmax; k++) 
    {s_all=s_all+heights[k]*hh[k]; q_all=q_all+masses[k];}
    h_all=(s_all/q_all); 
    alert(&quot;Расчитали высоту общего центра тяжести груза, м, &quot;+&#039; h_all= &#039; + h_all);
    //расчитаем высоту общего центра тяжести вагона с грузом, м
    var h_zto=(q_all*h_all+hz*qm)/(q_all+qm);
    alert(&quot;Расчитали высоту общего центра тяжести вагона с грузом, м, &quot;+&#039; h_zto= &#039; + h_zto);
    
    return h_zto
};
 
// Функция проверки корректности ввода массы тела
//
// Входные данные:
// value    проверяемое значение
//
// Выходные данные:
// true  - если данные корректны
// false - если данные некорректны
function massValidator(value)
{
    return true;
};
 
// Функция проверки корректности ввода размера тела
//
// Входные данные:
// value    проверяемое значение
//
// Выходные данные:
// true  - если данные корректны
// false - если данные некорректны
function heightValidator(value)
{
    return true;
};
 
var calc = document.getElementById(&#039;calc&#039;);
var calcFrame = document.getElementById(&#039;calc-frame&#039;);
var calcResult = document.getElementById(&#039;calc-result&#039;);
 
// очищает результат предыдущих вычислений
function clearResult()
{
    calcResult.value = &#039;&#039;;
};
 
// удаление всех строк
function removeAllRows()
{
    var rows = calcFrame.getElementsByTagName(&#039;div&#039;);
    while ( rows.length ) {
        calcFrame.removeChild(calcFrame.lastChild);
    }
};
 
// добавить новую строку
function appendInput(row, className)
{
    var input = document.createElement(&#039;input&#039;);
    input.type = &#039;text&#039;;
    input.className = className;
    row.appendChild(input);
};
 
// добавить новую строку пар входных данных
function addRow()
{
    var row = document.createElement(&#039;div&#039;);
 
    appendInput(row, &#039;mass&#039;);
    appendInput(row, &#039;height&#039;);
 
    calcFrame.appendChild(row);
};
 
// обработчик на кнопку moreButton для добавления новой строки
document.getElementById(&#039;moreButton&#039;).onclick = function()
{
    addRow();
};
 
// обработчик на кнопку clearButton:
// 1. удалить все строки
// и Очистить строку результата
document.getElementById(&#039;clearButton&#039;).onclick = function()
{
    removeAllRows();
    clearResult();
};
 
// обработчик на кнопку clacButton для выполнения вычислени1
// функция формирует два массива masses и heights
// затем передает их в функцию, производящую вычисления
document.getElementById(&#039;calcButton&#039;).onclick = function()
{
    // Вспомогательная функция проверки ввода данных
    // Если строка не пустая и введенные данные корректны, то она возвращает true
    // иначе соодщает о некорректности данных и устанавливает фокус на данное поле ввода
    function validate(input, validator)
    {
        if ( input.value != &#039;&#039; &amp;&amp; validator(input.value) ) {
            return true;
        }
        alert(&#039;Неверные данные!&#039;);
        input.focus();
    };
 
    // массив масс
    var masses = [];
    // массив &quot;размеров&quot;
    var heights = [];
 
    // коллекция всех строк ввода
    var inputs = calcFrame.getElementsByTagName(&#039;input&#039;);
    for (var i = 0; i &lt; inputs.length; i++) {
        // заполняем массив масс
        if ( inputs[i].className == &#039;mass&#039; ) {
            if ( ! validate(inputs[i], massValidator) ) {
                return;
            }
            masses.push(inputs[i].value);
        }
        // заполняем массив &quot;размеров&quot;
        if ( inputs[i].className == &#039;height&#039; ) {
            if ( ! validate(inputs[i], heightValidator) ) {
                return;
            }
            heights.push(inputs[i].value);
        }
    }
 
    // Возможно, что никакие данные еще не введены
    if ( masses.length == 0 || heights.length == 0 ) {
        alert(&#039;Нет данных!&#039;);
        return;
    }
 
    // Здесь мы уверены, что все введенные данные корректны
    // что-то вычисляем и куда-то сохраняем
    var vibor = document.getElementById(&#039;constant&#039;).value;
    var result = calculate(masses, heights, vibor);
    calcResult.value = result;
};
 
&lt;/script&gt;
 
&lt;/body&gt;
&lt;/html&gt;</code></pre></div><p><strong>Rumata</strong>, очень прошу выслать свои координаты с ФИО - хочу вписать вас в соавторы проги, т.к. иначе это было бы..сами знаете как по отношению к вам.</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Wed, 14 Nov 2012 06:15:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65616#p65616</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64842#p64842</link>
			<description><![CDATA[<p>Спасибо,&nbsp; Rumata. <br />Просто изначально я планировал через цикл данные в массив загнать и тут же подсчитать, и расчитывал изначально на 8-10 строк примерно, <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.<br />Конечно это не сложный код и небольшой по сравнению с другими задачами.. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Wed, 17 Oct 2012 08:11:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64842#p64842</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64841#p64841</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>код такой большой получается</p></blockquote></div><p>На самом деле это небольшой код. Просто я его привел развернуто: с комментариями, отдельные действия вывел в отдельные функции. Там надо еще добавить немного полезного кода: сами вычисления, определить две функции валидации входных данных (отдельно массы и &quot;размера&quot;, или высоты). Код существенно увеличится, когда будет добавлено оформление, дополнительные возможности.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Wed, 17 Oct 2012 08:01:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64841#p64841</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64839#p64839</link>
			<description><![CDATA[<p>Благодарю, Rumata, я и не мог предположить, что код такой большой получается!</p><p>Думаю к Новому Году выложу рабочие коды минипрограмм по расчетам для конструкторов...сейчас внеплановая аттестация грозит...никак не дают поработать и довести все до ума, <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Wed, 17 Oct 2012 06:43:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64839#p64839</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64824#p64824</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>если к примеру добавить кнопку добавления новых полей ввода, как организовать снова ее вызов для еще добавления полей или ее можно бесконечно нажимать вначале (например перед первой формой) всех выводимых форм? Как насчет уникальности имен форм...?</p></blockquote></div><p>Достаточно иметь несколько заполненных полей, чтобы произвести вычисления. Добавив и заполнив еще несколько полей можно повторить вычисления для нового набора данных. Насчет уникальности имен элементов формы можно не беспокоиться - это решается двояко:<br />1. держать некий счетчик, который будет инкрементироваться при каждом новом наборе и обнуляться при сборе формы к первоначальному состоянию<br />2. так как это в первую очередь html страница, то отслеживать требуемые элементы можно по а) имени тега, б) имени класса, в) и то и другое. </p><div class="quotebox"><cite>stir пишет:</cite><blockquote><p>Еще идея посетила меня - сделать окно разделенным пополам, чтобы второе можно было очищать и запрашивать снова данные по одной и тойже форме... незнаю можно ли вообще это реализовать...</p></blockquote></div><p>Можно, но это сложно. В плане поддержки и интуитивности интерфейса. </p><p>Еще тогда я набросал маленькую черновую страничку, которая может что-то делать. В силу того что, это махровый черновик только чтобы показать ход моих мыслей я не реализовал функций проверки корректности данных и корректности количества введенных данных. Однако ход мыслей можно уловить. </p><div class="codebox"><pre><code>
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;form id=&quot;calc&quot;&gt;
&lt;div&gt;Result: &lt;input type=&quot;text&quot; id=&quot;calc-result&quot; readonly=&quot;readonly&quot; /&gt;&lt;/div&gt;
&lt;input type=&quot;button&quot; id=&quot;calcButton&quot; value=&quot;Посчитать!&quot; /&gt;
&lt;input type=&quot;button&quot; id=&quot;moreButton&quot; value=&quot; + &quot; /&gt;&lt;br /&gt;

&lt;div&gt;&lt;input value=&quot;Mass&quot; type=&quot;text&quot; readonly=&quot;readonly&quot; /&gt;&lt;input value=&quot;Height&quot; type=&quot;text&quot; readonly=&quot;readonly&quot; &gt;&lt;/div&gt;

&lt;div id=&quot;calc-frame&quot;&gt;&lt;/div&gt;

&lt;input type=&quot;button&quot; id=&quot;clearButton&quot; value=&quot;Очистить&quot; /&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

// Основная функция вычисляет нечто и возвращает его.
//
// Входные данные:
// masses	массив масс тел
// heights	массив &quot;размеров&quot; тел
//
// Выходные данные:
// результат вычисления
function calculate(masses, heights)
{
	var m = &#039;Masses: &#039; + masses.length + &#039;: &#039; + masses;
	var h = &#039;Heights: &#039; + heights.length + &#039;: &#039; + heights;

	alert(m + &#039;\n&#039; + h);

	return 
};

// Функция проверки корректности ввода массы тела
//
// Входные данные:
// value	проверяемое значение
//
// Выходные данные:
// true  - если данные корректны
// false - если данные некорректны
function massValidator(value)
{
	return true;
};

// Функция проверки корректности ввода размера тела
//
// Входные данные:
// value	проверяемое значение
//
// Выходные данные:
// true  - если данные корректны
// false - если данные некорректны
function heightValidator(value)
{
	return true;
};

var calc = document.getElementById(&#039;calc&#039;);
var calcFrame = document.getElementById(&#039;calc-frame&#039;);
var calcResult = document.getElementById(&#039;calc-result&#039;);

// очищает результат предыдущих вычислений
function clearResult()
{
	calcResult.value = &#039;&#039;;
};

// удаление всех строк
function removeAllRows()
{
	var rows = calcFrame.getElementsByTagName(&#039;div&#039;);
	while ( rows.length ) {
		calcFrame.removeChild(calcFrame.lastChild);
	}
};

// добавить новую строку
function appendInput(row, className)
{
	var input = document.createElement(&#039;input&#039;);
	input.type = &#039;text&#039;;
	input.className = className;
	row.appendChild(input);
};

// добавить новую строку пар входных данных
function addRow()
{
	var row = document.createElement(&#039;div&#039;);

	appendInput(row, &#039;mass&#039;);
	appendInput(row, &#039;height&#039;);

	calcFrame.appendChild(row);
};

// обработчик на кнопку moreButton для добавления новой строки
document.getElementById(&#039;moreButton&#039;).onclick = function()
{
	addRow();
};

// обработчик на кнопку clearButton:
// 1. удалить все строки
// Очистить строку результата
document.getElementById(&#039;clearButton&#039;).onclick = function()
{
	removeAllRows();
	clearResult();
};

// обработчик на кнопку clacButton для выполнения вычислени1
// функция формирует два массива masses и heights
// затем передает их в функцию, производящую вычисления
document.getElementById(&#039;calcButton&#039;).onclick = function()
{
	// Вспомогательная функция проверки ввода данных
	// Если строка не пустая и введенные данные корректны, то она возвращает true
	// иначе соодщает о некорректности данных и устанавливает фокус на данное поле ввода
	function validate(input, validator)
	{
		if ( input.value != &#039;&#039; &amp;&amp; validator(input.value) ) {
			return true;
		}
		alert(&#039;Неверные данные!&#039;);
		input.focus();
	};

	// массив масс
	var masses = [];
	// массив &quot;размеров&quot;
	var heights = [];

	// коллекция всех строк ввода
	var inputs = calcFrame.getElementsByTagName(&#039;input&#039;);
	for (var i = 0; i &lt; inputs.length; i++) {
		// заполняем массив масс
		if ( inputs[i].className == &#039;mass&#039; ) {
			if ( ! validate(inputs[i], massValidator) ) {
				return;
			}
			masses.push(inputs[i].value);
		}
		// заполняем массив &quot;размеров&quot;
		if ( inputs[i].className == &#039;height&#039; ) {
			if ( ! validate(inputs[i], heightValidator) ) {
				return;
			}
			heights.push(inputs[i].value);
		}
	}

	// Возможно, что никакие данные еще не введены
	if ( masses.length == 0 || heights.length == 0 ) {
		alert(&#039;Нет данных!&#039;);
		return;
	}

	// Здесь мы уверены, что все введенные данные корректны
	// что-то вычисляем и куда-то сохраняем
	var result = calculate(masses, heights);
	calcResult.value = result;
};

&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 16 Oct 2012 16:12:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64824#p64824</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64795#p64795</link>
			<description><![CDATA[<p>Извините, что не писал долгое время - выписывался с больничного...</p><p><strong>shiz</strong>, а есть пример с использованием window.showModalDialog? не использовал еще ни разу такое...</p><p><strong>Rumata</strong>, и если к примеру добавить кнопку добавления новых полей ввода, как организовать снова ее вызов для еще добавления полей или ее можно бесконечно нажимать вначале (например перед первой формой) всех выводимых форм? Как насчет уникальности имен форм...?<br />Дело в том, что вопрос один и тот же задаем пользователю - ввести в два поля формы данные и столько раз их вводить на сколько грузомест он ведет расчет изначально по плану.<br />Например, надо разместить такое на платформе вагона - 1.груз массой 1000 кг и высотой от пола 1 м, а второй еще 5000 кг и высотой от пола вагона 1,5 м. Эти данные мы должны запросить у пользователя и ввести в массив, а после нажатия кнопки РАСЧЕТ произвести математические действия по известной формуле (ее не привожу) и вывести результат на экран и сохранить в файл дополнительно (это не проблемма).</p><p>Попробую еще инет порыть...</p><p>Еще идея посетила меня - сделать окно разделенным пополам, чтобы второе можно было очищать и запрашивать снова данные по одной и тойже форме... незнаю можно ли вообще это реализовать...</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Tue, 16 Oct 2012 09:22:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64795#p64795</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64716#p64716</link>
			<description><![CDATA[<p>Извиняюсь, слабо понял, что надо.<br /></p><div class="quotebox"><cite>stir пишет:</cite><blockquote><p>далее организовываем в цикле считывание информации - массу груза и высоту центра тяжести каждого из грузов…</p></blockquote></div><p>Откуда считываем, из вводимых пользоваиелем данных в форме? Т. е. в цикле ожидаем события onsubmit формы? По-моему, так не получится - всё зависнет, надо суметь обойтись без цикла. Или при каждой итерации выводить форму в отдельном модальном окне методом window.showModalDialog.</p><div class="quotebox"><cite>stir пишет:</cite><blockquote><div class="codebox"><pre><code>function r1 (n1) {
    ...
        var m1=document.forms[&quot;r01&quot;].n1.value;</code></pre></div></blockquote></div><p>-- вероятно, имелось в виду:<br /></p><div class="codebox"><pre><code>var m1=document.forms[&quot;r01&quot;][n1].value;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (shiz)]]></author>
			<pubDate>Thu, 11 Oct 2012 21:14:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64716#p64716</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64714#p64714</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>спрашиваем кол-во мест у пользователя</p></blockquote></div><p>не обязательно.</p><p>Форма может выглядеть например так:<br />1. кнопка добавления новых полей ввода<br />2. кнопка очистки формы<br />3. кнопка - расчета</p><p>кнопка 1 добавляет новую пару полей для ввода массы и &quot;размера&quot; тела (в кавычках, потому что не понятно что это &quot;центр масс&quot; или высота тела) <br />кнопка 2 удаляет все предыдущие введенные поля для ввода массы и &quot;размера&quot;<br />кнопка 3 собирает все введенные данные для масс и &quot;размеров&quot; тел и производит вычисления.</p><p>Правильно?</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 11 Oct 2012 21:08:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64714#p64714</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64713#p64713</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>сильно не пинайте, вот примерный антишедевр накидал...</p></blockquote></div><p>Хочется несильно, но пиннуть, простите:<br />- в процессе представления создается впечатление...что кто-то &quot;криво&quot; нарисовал и завещал Вам с наилучшими пожеланиями <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />- изложите, пожалуйста, сколько вешать в граммах..., пытался, честно</p>]]></description>
			<author><![CDATA[null@example.com (dab00)]]></author>
			<pubDate>Thu, 11 Oct 2012 20:58:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64713#p64713</guid>
		</item>
		<item>
			<title><![CDATA[JS+HTA:форма в цикле JS=?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64712#p64712</link>
			<description><![CDATA[<p>Подскажите в коде HTA в цикле можно ли внедрить форму для считывания данных вводимых пользователем?<br />Ум неясен по причине болезни - сильно не пинайте, вот примерный антишедевр накидал...<br />Задача: автоматизировать расчет центра тяжести вагона, кол-во грузов от 1 до n различной массы и высотой.<br />Решение: <br />для упрощения кода спрашиваем кол-во мест у пользователя,<br />далее организовываем в цикле считывание информации - массу груза и высоту центра тяжести каждого из грузов,<br />далее заносим данные в массивы и производим окончательный расчет.<br />выводим пользователю картинку (хотя можно и сразу при начале работы программы) и расчетные данные.<br />Особеннности: расчет приближенный в виду размещения груза в линию, гна самом деле возможны отклонения - т.е. грузы могут в продольном сечениии платформы иногда накладываться на линии, но такой вариант крайне редок, поэтому считаем, что груз распологается последовательно в одном направлении.</p><p>примерный код хта:<br /></p><div class="codebox"><pre><code>&lt;HTML&gt;
&lt;HEAD&gt; 
&lt;TITLE&gt;Программа расчета центра тяжести вагона&lt;/TITLE&gt;
&lt;HTA:APPLICATION ID=&quot;PKOHTA&quot;   APPLICATIONNAME=&quot;pko1HTA&quot;   BORDER=””  CAPTION=&quot;yes&quot;  ICON=&quot;pko1.ico&quot;
SHOWINTASKBAR=&quot;no&quot;  SINGLEINSTANCE=&quot;yes&quot;  SYSMENU=&quot;yes&quot;  WINDOWSTATE=&quot;normal&quot; &gt;
&lt;script src=&quot;funktions1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/HEAD&gt;
&lt;BODY BGCOLOR=&quot;ButtonFace&quot; SCROLL=&quot;auto&quot;&gt;
&lt;BR&gt;
расчетная программа:
&lt;BR&gt;

&lt;form name=&quot;r01&quot;&gt;
Введите кол-во мест (число от 1 до 100 включительно)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;input type=text name=&quot;n1&quot; value=&quot;до 3 цифр&quot; maxlength=3 onchange=&quot;validate(this, 1, 100)&quot;&gt;
&lt;br&gt;
&lt;input type=button name=&quot;Reset&quot; value=&quot;Сбросить&quot; OnClick=&#039;javascript:reset ()&#039;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;input type=button name=&quot;go&quot; value=&quot;Начать расчет&quot; OnClick=&#039;javascript:text=r1 (&quot;n1&quot;)&#039;&gt;
&lt;/form&gt;

&lt;/BODY&gt;
&lt;/HTML&gt;</code></pre></div><p>примерный код с ошибками js:</p><div class="codebox"><pre><code>//----------------------------------------------------------------------------- 0 -----------------------
// функция проверки по введенному числу
function validate(obj, low, high) {
    var error1=&#039;&#039;;
if ((obj.value &lt; low) || (obj.value &gt; high))
{alert(&quot;Введено недопустимое значение!&quot;); window.error1=&#039;0&#039;;}
else {window.error1=&#039;1&#039;;}
return error1;
}

//основная программа расчета
function r1 (n1) {
    //alert(&quot;проводим расчет т.к. error1=&quot; + error1);
    if (error1==0)
    {alert(&quot;error1. programm end&quot;)}
    else {
        var m1=document.forms[&quot;r01&quot;].n1.value;
        //alert(&quot;кол-во мест = &quot;+m1);
        var q = hg = hc = new Array();
        //введем через форму и цикл данные в массивы;
        var i=0; do 
        {
            var name1 = &#039;loads&#039;+i;
form_loads (name1);
q[i]=a1; hg[i]=a2; hc[i]=a3;// данные из формы;

        }
        while (i &lt; m1);
        //расчет
        //вывод данных

    }

}



function form_loads (name1) {
var t1= &quot;&lt;form name=name1&gt;&quot;;
var t2= &quot;Введите массу груза, кг (число от 1 до 10000000 включительно)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;;
var t3= &quot;&lt;input type=text name=&quot;a1&quot; value=&quot;до 8 цифр&quot; maxlength=8 onchange=&quot;validate(this, 1, 10000000)&quot;&gt;&lt;br&gt;&quot;;
var t4= &quot;Введите высоту загрузки груза, мм (число от 1 до 10000000 включительно)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;;
var t5= &quot;&lt;input type=text name=&quot;a2&quot; value=&quot;до 8 цифр&quot; maxlength=8 onchange=&quot;validate(this, 1, 10000000)&quot;&gt;&lt;br&gt;&quot;;
var t6= &quot;&lt;input type=button name=&quot;Reset&quot; value=&quot;Сбросить&quot; OnClick=&#039;javascript:reset ()&#039;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;;
var t7= &quot;&lt;input type=button name=&quot;go&quot; value=&quot;далее&quot; OnClick=&#039;javascript:text= (&quot;a1&quot;;&quot;a2&quot;)&#039;&gt;&lt;/form&gt;&quot;;
    document.write(t1+t2+t3+t4+t5+t6+t7);
    window.a1=document.forms[&quot;name1&quot;].a1.value;
    window.a2=document.forms[&quot;name1&quot;].a2.value;
}</code></pre></div><p>вся проблемма связана с выводом на экран циклично формой, т.е. функции - <strong>form_loads</strong>, как создать чтение данных - голову ломаю, просто форму HTML не принимает JS, и через тупой вывод текста - тоже не вышло..<br />Подскажите как выводить правильно форму с запросами в JS??</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Thu, 11 Oct 2012 16:13:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64712#p64712</guid>
		</item>
	</channel>
</rss>
