Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.05.2015, 06:12
Интересующийся
Отправить личное сообщение для antonizbraniy Посмотреть профиль Найти все сообщения от antonizbraniy
 
Регистрация: 12.05.2015
Сообщений: 16

Суть в том, что у меня стоит задание создать конструктор.
Вот я сделал в пейнте что я пытаюсь объяснить: http://prntscr.com/748ur1
Будут инпуты для названий переменных и правее инпут для значений этих переменных.
Последние два инпута: для названия переменной и формулы, которая использует ранее веденные\созданные переменные. Нажатие на кнопку "OK" и вывод результата в последний инпут.
Суть такого канструтора должна быть в том, что пользователь сам задает\создает переменные и вводит нужную формулу. То есть там может быть и дискриминант, площади, объемы. Вот чего мне нужно добиться в финальном варианте.
Ответить с цитированием
  #12 (permalink)  
Старый 12.05.2015, 07:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну а зачем тогда операцию приравнивать тоже некой переменной?
Тут не столько проблема в создании переменной, ее можно объявить и так:
<input onkeyup="window[this.value]=5;alert(a)" /> вводим в поле a, получаем 5
а в том, как строго по парам разбить элементы формы, то есть, например, четные это переменные, а нечетные это их значения, за минусом трех элементов - формулы, кнопки и поля результата.
Ответить с цитированием
  #13 (permalink)  
Старый 12.05.2015, 07:17
Интересующийся
Отправить личное сообщение для antonizbraniy Посмотреть профиль Найти все сообщения от antonizbraniy
 
Регистрация: 12.05.2015
Сообщений: 16

В принципе согласен. Последнее не обязательно приравнивать. Хотя, тот же дискриминант используется в последующих формулах для x1, x2. Но это уже другие дебри. Сейчас главное понять как создавать переменные и особенно как считывать введенные формулы. Вот это у меня в голове не укладывается.
Ответить с цитированием
  #14 (permalink)  
Старый 12.05.2015, 07:18
Интересующийся
Отправить личное сообщение для antonizbraniy Посмотреть профиль Найти все сообщения от antonizbraniy
 
Регистрация: 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>
Ответить с цитированием
  #15 (permalink)  
Старый 12.05.2015, 07:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Math.pow(l[2],2)-4*l[1]*l[3] - а откуда вы знаете, что именно возведение в степень и дальнейшие операции, и именно с l[2], l[1] ... ?
Ответить с цитированием
  #16 (permalink)  
Старый 12.05.2015, 08:09
Интересующийся
Отправить личное сообщение для antonizbraniy Посмотреть профиль Найти все сообщения от antonizbraniy
 
Регистрация: 12.05.2015
Сообщений: 16

Не со всем понял вопрос. Ну... ведь числа заносятся поочередно. Потому и знаю, что l[1] - "a"; l[2] - "b"; l[3] - "c"; Так или иначе всё ровно она работает неправильно. Ведь я формулу дискриминанта указал в коде, а мне надо в лишнем инпуте.
Ответить с цитированием
  #17 (permalink)  
Старый 12.05.2015, 08:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

lol = Math.pow(l[2],2)-4*l[1]*l[3];

Ну даже если и "угадали", то почему переменные (и где они помещаются в массив, и где им присваиваются значения?) в выражении следуют именно в порядке l[2], l[1], l[3], или тоже угадали?
Ответить с цитированием
  #18 (permalink)  
Старый 12.05.2015, 08:50
Интересующийся
Отправить личное сообщение для antonizbraniy Посмотреть профиль Найти все сообщения от antonizbraniy
 
Регистрация: 12.05.2015
Сообщений: 16

В порядке они идут так, потому что по формуле b^2-4*a*c; a находиться в l[1], b в l[2], c в l[3]. Тут нечего было угадывать. Порядок соблюдается, потому что ещё в цикле эти значения ввелись по порядку.
Ответить с цитированием
  #19 (permalink)  
Старый 12.05.2015, 09:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Оригинально, В порядке они идут так, потому что по формуле b^2-4*a*c;

А вы откуда знаете, что формулу ввели именно такую, а не просто c + b * a, при этом порядок объявления переменных был указан как a, b, c?
Ответить с цитированием
  #20 (permalink)  
Старый 13.05.2015, 23:21
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Есть готовые лайбы токенизаторы-калькуляторы, найдите и не мучайтесь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
Избавление от глобальных переменных при проходе алгоритма через несколько ивентов shoo Общие вопросы Javascript 4 13.11.2012 12:07
Создание своей библиотеки. Создание двух одинаковых объектов. Как избежать? IDCh Javascript под браузер 2 31.10.2012 12:53
Значение переменных из JavaScript в PHP pr43unknown Общие вопросы Javascript 3 18.01.2012 18:37
Создание скрипта! Создание диктанта для учеников! Елизавета Работа 10 30.06.2010 21:00