У меня есть сценарий. Этот скрипт должен произвести некоторые вычисления. По той причине, что теперь пользователь должен редактировать переменные сценария в файле, я хочу написать форму, которая обновляет переменные всегда, когда форма обновляется. Существует около 10 переменных, которые необходимо обновлять всегда, когда обновляется одна переменная в форме.
Например:
В HTML-форме есть 10 полей, подобных этому (onchange = "formChanged()" из пробной версии):
<input type = "number" name = "pL" step = "0.001" value = "250000" onchange = "formChanged()"/><br>
Итак, я хочу отредактировать эту переменную в JavaScript:
var pL=250000;
Я пробовал это:
function formChanged() {
var x = document.getElementsByName("x")[0].value
var m0 = document.getElementsByName("pL")[0].value
var V = document.getElementsByName("V")[0].value
}
Но это не работает ... Есть ли предложения, что делаю не так?
Можете ли вы поделиться своей полной функцией onchange?
извините во время копирования, я забыл .value @ slash197, теперь лучше?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


См. https://www.w3schools.com/jsref/met_doc_getelementsbyname.asp
Это должен быть getElementsByName.
<!DOCTYPE html>
<html>
<body>
<input type = "number" name = "pL" step = "0.001" value = "250000" onchange = "formChanged()"/><br>
<input type = "number" name = "x" step = "0.001" value = "250000" onchange = "formChanged()"/><br>
<input type = "number" name = "V" step = "0.001" value = "250000" onchange = "formChanged()"/><br>
<p id = "demo"></p>
<script>function formChanged() {
var x = document.getElementsByName("x")[0].value
var m0 = document.getElementsByName("pL")[0].value
var V = document.getElementsByName("V")[0].value
document.getElementById("demo").innerHTML = x + ' ' + m0 + ' ' + V;
}
</script>
</body>
</html>Это работает. Добавьте, пожалуйста, отрывок со всем кодом.
Спасибо, но, к сожалению, это не единственная ошибка ... :(
Смотрите мою правку. @Ibrahim ответ неверен для input, см .: w3schools.com/tags/tag_input.asp
В HTML5 атрибут «name» устарел и был заменен атрибутом «id» для многих элементов. Я пробовал следующее, и у меня это сработало.
<input type = "number" id = "pL" step = "0.001" value = "250000" onchange = "formChanged()"/>
<script>
function formChanged() {
var m0 = document.getElementById("pL").value;
alert("The current value is " + m0);
}
</script>
Сообщите мне, работает ли это и для вас. Также убедитесь, что вы поставили точки с запятой после операторов в функции formChanged ().
Атрибут name для элементов формы является нет "устаревшим" или устаревшим: см. Спецификация W3C.
если вы хотите изменить значение переменной с помощью javascript, присвойте значение его свойству value.
так что вместо
pL=250000;
напишите, в вашей функции formChanged
document.getElementsByName("pL")[0].value=250000;
также из вашего вопроса неясно, какой расчет вы хотите сделать на если, скажем, вы хотите добавить значения x и V, чтобы получить новый pL затем написать
var x = document.getElementsByName("x")[0].value
var m0 = document.getElementsByName("pL")[0].value
var V = document.getElementsByName("V")[0].value
document.getElementsByName("pL")[0].value=Number(x)+Number(V)
вам действительно стоит взять книгу и начать изучать js, это слишком тривиально,
m0.value