| 
	| 
	
	| 
		
	| 
			
			 
			
				12.05.2015, 06:12
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.05.2015 
						Сообщений: 16
					 
		
 |  |  
	| Суть в том, что у меня стоит задание создать конструктор. 
Вот я сделал в пейнте что я пытаюсь объяснить: http://prntscr.com/748ur1 
Будут инпуты для названий переменных и правее инпут для значений этих переменных. 
Последние два инпута: для названия переменной и формулы, которая использует ранее веденные\созданные переменные. Нажатие на кнопку "OK" и вывод результата в последний инпут. 
Суть такого канструтора должна быть в том, что пользователь сам задает\создает переменные и вводит нужную формулу. То есть там может быть и дискриминант, площади, объемы. Вот чего мне нужно добиться в финальном варианте. |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 07:00
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Ну а зачем тогда операцию приравнивать тоже некой переменной?Тут не столько проблема в создании переменной, ее можно объявить и так:
 <input onkeyup="window[this.value]=5;alert(a)" /> вводим в поле a, получаем 5
 а в том, как строго по парам разбить элементы формы, то есть, например, четные это переменные, а нечетные это их значения, за минусом трех элементов - формулы, кнопки и поля результата.
 |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 07:17
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.05.2015 
						Сообщений: 16
					 
		
 |  |  
	| В принципе согласен. Последнее не обязательно приравнивать. Хотя, тот же дискриминант используется в последующих формулах для x1, x2. Но это уже другие дебри. Сейчас главное понять как создавать переменные и особенно как считывать введенные формулы. Вот это у меня в голове не укладывается. |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 07:18
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.05.2015 
						Сообщений: 16
					 
		
 |  |  
	| Вот так я пока понял как создавать инпуты. Даже могу их считать. Для вычисления дискриминанта. Но этот дискриминант должен считывать с инпута, я не должен знать его заранее (
 <form>
 <div id="inputi">
 <div><input name="my_input"><input type="button" value="+" onclick="add_input(this.parentNode)"><input id="suma" value="0"></div>
 </div>
 <input id="ravno" value="0"><input type="button" value="ok" id="oki" onClick="ok()">
 </form>
 <script language="javascript">
 function ok()
 {
 var l = new Array();
 var summa = parseInt(document.getElementById("suma").value)+1;
 var lol;
 for (var i = 0; i<summa; i++)
 {
 l[i]=document.getElementsByName("my_input").item(i).va  lue;
 }
 lol = Math.pow(l[2],2)-4*l[1]*l[3];
 document.getElementById("ravno").value=lol;
 }
 // Теперь эта функция будет принимать указатель на объект, после которого нужно осуществить вставку
 function add_input(obj)
 {
 var new_input=document.createElement('div');
 new_input.innerHTML='<br>'+document.getElementById  ('inputi').getElementsByTagName('div').length+'<br  ><input name="my_input">';
 // Дописываем рядом с input-ом кнопку, она будет добовлять элемент именно под input, рядом с которым она находится
 new_input.innerHTML=new_input.innerHTML+'<input type="button" value="+" onclick="add_input(this.parentNode)">';
 // И еще одна кнопочка для его удаления.
 new_input.innerHTML=new_input.innerHTML+'<input type="button" value="-" onclick="del_input(this.parentNode)">';
 //Ищем присутствует ли следующий узел в структуре DOM-а
 if (obj.nextSibling)
 // если да - то создаем после него
 document.getElementById('inputi').insertBefore(new  _input,obj.nextSibling)
 //если такого не нашлось то просто добавляем в конец
 else document.getElementById('inputi').appendChild(new_  input);
 }
 // А эта функция будет принимать указатель на объект, который нужно удалить
 function del_input(obj)
 {
 document.getElementById('inputi').removeChild(obj)
 }
 </script>
 
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 07:59
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Math.pow(l[2],2)-4*l[1]*l[3] - а откуда вы знаете, что именно возведение в степень и дальнейшие операции, и именно с l[2], l[1] ... ? |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 08:09
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.05.2015 
						Сообщений: 16
					 
		
 |  |  
	| Не со всем понял вопрос. Ну... ведь числа заносятся поочередно. Потому и знаю, что l[1] - "a"; l[2] - "b"; l[3] - "c"; Так или иначе всё ровно она работает неправильно. Ведь я формулу дискриминанта указал в коде, а мне надо в лишнем инпуте. |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 08:27
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Выставляя код, форматируйте его, заключая в ВВ-тег, иначе читать его трудно. Но что-то не видно, чтобы был разбор строки описывающей операции, после чего можно было бы смело выполнять:
 lol = Math.pow(l[2],2)-4*l[1]*l[3];
 
 Ну даже если и "угадали", то почему переменные (и где они помещаются в массив, и где им присваиваются значения?) в выражении следуют именно в порядке l[2], l[1], l[3], или тоже угадали?
 |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 08:50
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.05.2015 
						Сообщений: 16
					 
		
 |  |  
	| В порядке они идут так, потому что по формуле b^2-4*a*c; a находиться в l[1], b в l[2], c в l[3]. Тут нечего было угадывать. Порядок соблюдается, потому что ещё в цикле эти значения ввелись по порядку. |  |  
	| 
		
	| 
			
			 
			
				12.05.2015, 09:04
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Оригинально, В порядке они идут так, потому что по формуле b^2-4*a*c;
 А вы откуда знаете, что формулу ввели именно такую, а не просто c + b * a, при этом порядок объявления переменных был указан как a, b, c?
 |  |  
	| 
		
	| 
			
			 
			
				13.05.2015, 23:21
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 23.10.2010 
						Сообщений: 2,718
					 
		
 |  |  
	| Есть готовые лайбы токенизаторы-калькуляторы, найдите и не мучайтесь. |  |  |  |